PostgreSQL

Postgresql Generate_Series pentru a crea o serie de date

Postgresql Generate_Series pentru a crea o serie de date

Trebuie să fiți familiarizați cu introducerea datelor în orice sistem de gestionare a bazelor de date. În timp ce introduceți date, este posibil să nu aveți timp și trebuie să ignorați golurile din datele dvs. sau să doriți câteva serii consistente de înregistrări. În această situație, PostgreSQL generate_series este aplicabil pentru a atinge obiectivul cerut. După cum indică și numele, mecanismul acestei funcții conține fie 2, fie 3 intrări. eu.e., generate_series vă permite să generați o secvență de înregistrări cu un punct de plecare, un punct final și o valoare incrementală (opțional). Funcționează în principal pe două tipuri de date. eu.e., Numere întregi și mărci de timp. Pentru a crea o secvență de date, funcția generate_series este utilizată în moduri diferite.

Sintaxă:

>> Generate_series ([start], [stop], [optional] pas / interval]);

Descrierea sintaxei interogării este următoarea:

Să avem o idee despre cum poate funcționa funcția generate_series (). Mai jos sunt câteva exemple elementare. Pentru a înțelege conceptul acestei funcții, trebuie să instalăm și să deschidem shell-ul de linie de comandă postgreSQL (psql).

După configurarea reușită și în timp ce furnizăm localhost, numele bazei de date, numărul portului și parola, putem trece prin orice interogare pe psql.

Exemplul 01: Generate_series folosind DATE plus operator întreg

Următoarea interogare conține o funcție încorporată „DATE” pentru a prelua data curentă. În timp ce „a” este operatorul furnizat. Funcția acestui operator este de a adăuga acel anumit număr (interval) în partea din zi a datei. Sau cu alte cuvinte, cu intervale specifice, zilele sunt schimbate și afișate în dată. În ieșire, intervalul „9” va fi adăugat în fiecare zi, i.e., 9 + 9 = 18, apoi 27 și așa mai departe, până când se atinge suma de 40.

>> SELECTAȚI data_curentă + s.a AS date FROM Generate_series (0,40,9) AS s (a);

Exemplul 02: Utilizarea datei curente pentru a genera seria de date

Pentru a genera serii de date cu ajutorul datei curente, utilizăm funcția now (), care preia data curentă automat din sistem. Puteți vedea rezultatul corespunzător arată data de până la 4 zile. Acest lucru se datorează faptului că am limitat execuția adăugând 4 zile la data curentă. Deoarece am furnizat intervalul de timp până la o zi, deci fiecare dată va fi incrementată cu 1 adăugare în zi

>> selectați * din generate_series (acum (), acum () + '4 zile', '1 zi');

Exemplul 03: Generarea seriilor de date folosind marcaje temporale

Marcaje de ore: Această funcție folosește și tipul de date al marcajelor de timp. Marcajul temporal este practic o secvență de caractere care furnizează ora și data unei zile înrudite. Funcția corespunzătoare facilitează utilizatorului furnizarea de date între ambele date pe care obișnuiam să le anticipăm în interogare. Se obține lista marcajelor de timp de la data 7 la 11 cu o singură marcă de timp la fiecare 5 ore.

>> selectați * din generate_series ('2021-3-7 00:00' :: timestamp, '2021-3-11 12:00', '5 ore');

Interogarea, așa cum s-a menționat mai sus, este, de asemenea, utilizată pentru a adăuga minute și secunde cu ore pentru a obține o marcă de timp mai bună între zilele de marcă de timp relevantă.

Marcaje de timp ale zilelor: În exemplul excesiv, am văzut că marca temporală este utilizată pentru a afișa datele dintre cele două date respective pe care le-am furnizat cu modificarea în ore incrementată cu 5. În exemplul actual, vom vedea marcajul de timp în zile. Zilele sunt incrementate cu 2 deoarece am inițiat un decalaj de 2 zile în rezultatul particular.

>> selectați * din generate_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 zile');

Exemplul 04: Generarea unor date specifice ale lunii folosind date_trunc

Prima zi a lunii

Dacă dorim să generăm prima dată a lunii curente, vom folosi interogarea anexată mai jos.Funcția distinctă utilizată aici este date_trunc, care trunchiază data cu precizie dată.eu.e. acum()

>> selectați data_trunc ('lună', acum ());

      Ultima zi a lunii

Aceeași abordare date_trunc va genera ultima zi a lunii.

>> selectați data_trunc ('lună', acum ()) + '1 lună' :: interval - '1 zi' :: interval ca sfârșit_de_lună;

La jumătatea lunii

La jumătatea lunii se obține modificând interogarea anterioară. Vom utiliza funcția medie pentru a obține obiectivul respectiv. Sau vom scădea 17 zile din ultima.

>> selectați data_trunc ('lună', acum ()) + '1 lună' :: interval - '17 zile ':: interval ca mid_of_month;

Exemplul 05: Generarea de date folosind date legate de calendar

Iată exemplul utilizării datelor calendaristice. Vom cunoaște anul bisect, i.e., total zile în luna februarie.„T” înseamnă adevărat înseamnă an este un an bisect, iar pentru „f”, este fals „dow” reprezintă zilele săptămânii. Coloana „Feb” conține numărul total de zile din lună. „Zi” reprezintă prima zi a lui Jan din fiecare an. Conform cercetărilor, săptămânile ISO încep de luni, iar prima săptămână a unui an conține 5 ianuarie a anului.

>> selectați data :: data, extrageți ('isodow' de la data) ca dow, to_char (data, 'dy') ca zi, extrageți ('iso year' de la data) ca "iso year", extrageți ('week') din data) ca săptămână, extrageți („zi” din (dată + interval „2 luni - 1 zi”)) ca februarie, extrageți („anul” din data) ca an, extrageți („zi” din (dată + interval ” 2 luni - 1 zi ')) = 29 ca salt de la generate_series (data' 01-01-2010 ', data' 01-03-2020 ', interval' 1 an ') ca t (dată);

Isodow este ziua standard a săptămânii „ISO”. Interogarea se va executa din 2010 până în 2020 în timp ce se manipulează în fiecare lună, săptămână și zi a anului.

Exemplul 06: generarea de serii de date specifice și numărul de zile din săptămână

În această interogare, vom obține date și numere de zile prin filtrarea zilelor într-o săptămână. Vom lua în considerare numeric zilele săptămânii. De exemplu, începând de la 0 la 6. Unde 0 este duminică și 6 este sâmbătă. În această interogare, veți vedea că am aplicat o condiție pentru a aduce date și numere de zi care nu sunt în 2 și 5. De exemplu, pe 20 februarie era sâmbătă, deci numărul care a apărut este 6.

>> cu zile ca (selectați dd, extrageți (DOW din dd) dw din generate_series ('2021-02-20' :: data, '2021-03-05' :: data, '1 day' :: interval) dd ) selectați * din zilele în care nu este în (2,5);

Concluzie

Articolul, așa cum s-a menționat mai sus, acoperă majoritatea funcționalităților de bază legate de generarea de serii pentru a crea serii de date. Exemplele detaliate discutate în fiecare aspect sunt atât de semnificative încât vor intensifica cunoștințele articolului respectiv.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...