Postgres gruppe for time med tiden

Postgres gruppe for time med tiden
En postgresgruppe etter klausul brukes til å dele radene som er oppnådd fra Select -setningen i gruppene. Ved å bruke en gruppe BY-klausul, kan vi kort liste dataene ved å få dem til å vises i tabellen på en gang. Denne klausulen inneholder alltid et kolonnenavn. Postgres Group etter timen med tidsavtaler med å gruppere dataene ved å avhengig av tidsstempelets time.

Syntaks

PLUKKE UT
Kolonne1,
Funksjon (kolonne2)
FRA
Name_of_table
GRUPPE AV
Kolonne1;

Vi kan også bruke mer enn en kolonne i kommandoen.

Gruppe etter klausulimplementering

For å forklare konseptet med en gruppe etter klausul, bør du vurdere tabellen nedenfor, kalt klient. Dette forholdet er opprettet for å inneholde lønnen til hver klient.

>> Velg * fra klient;

Vi vil bruke en gruppe etter klausul ved å bruke en enkelt kolonne 'lønn'. En ting jeg bør nevne her er at kolonnen som vi bruker i Select -setningen må nevnes i gruppen etter klausul. Ellers vil det føre til en feil, og kommandoen vil ikke bli utført.

>> Velg lønn fra kundegruppe etter lønn;

Du kan se at den resulterende tabellen viser at kommandoen har gruppert de radene som har samme lønn.

Nå har vi brukt denne klausulen på to kolonner ved å bruke en innebygd funksjonstelling () som teller antall rader som brukes av SELECT-setningen, og deretter blir gruppen BY-klausulen brukt for å filtrere radene ved å kombinere de samme lønnsrader. Du kan se at de to kolonnene som er i SELECT-setningen også brukes i gruppen-for-klausulen.

>> Velg lønn, tell (lønn) fra kundegruppe etter lønn;

Gruppe etter time

Lag en tabell for å demonstrere begrepet en gruppe etter klausul om et postgres -forhold. Tabellen som heter class_time er opprettet med kolonnene ID, emne og c_period. Både ID og emnet har datatypevariabel av heltall og varchar, og den tredje kolonnen inneholder datatypen til den innebygde tidens tid, da vi trenger å bruke gruppen etter klausul på tabellen for å hente timedelen fra hele tiden uttalelse.

>> Lag tabellklassen_tid (id heltall, emne varchar (10), c_period tid);

Etter at tabellen er opprettet, vil vi sette inn data i radene ved å bruke en innsatserklæring. I C_Period -kolonnen har vi lagt til tid ved å bruke standardformatet for tid 'HH: MM: SS' som må lukkes i omvendt koma. For å lage klausulgruppen ved å jobbe med dette forholdet, må vi legge inn data slik at noen rader i C_Period -kolonnen samsvarer med hverandre slik at disse radene enkelt kan grupperes.

>> Sett inn i klassen (Id, emne, C_Period) (2, 'Maths', '03:06:27'), (3, 'engelsk', '11: 20: 00 '), (4,' s.Studier ', '09: 28: 55'), (5, 'Art', '11: 30: 00 '), (6,' Persian ', '00: 53: 06');

6 rader er satt inn. Vi vil se innsatte data ved å bruke en SELECT -setning.

>> velg * fra class_time;

Eksempel 1

For å fortsette videre med å implementere en gruppe etter klausul etter timedelen av tidsstempel, vil vi bruke en SELECT -kommando på tabellen. I denne spørringen brukes en dato_trunc -funksjon. Dette er ikke en brukeropprettet funksjon, men er allerede til stede i postgres som skal brukes som en innebygd funksjon. Det vil ta nøkkelordet 'Time' fordi vi er opptatt av å hente en time, og for det andre C_PERIOD -kolonnen som parameter. Den resulterende verdien fra denne innebygde funksjonen ved å bruke en SELECT-kommando vil gå gjennom Count (*) -funksjonen. Dette vil telle alle de resulterende radene, og da blir alle radene gruppert.

>> velg date_trunc ('time', c_period), count (*) fra class_time group med 1;

Date_Trunc () -funksjonen er avkortet funksjon som brukes på tidsstempelet for å avkutte inngangsverdien til granularitet som sekunder, minutter og timer. Så i henhold til den resulterende verdien oppnådd gjennom kommandoen, blir to verdier med de samme timene gruppert og talt to ganger.

En ting skal bemerkes her: avkortet (time) -funksjonen omhandler bare timedelen. Den fokuserer på venstre verdi, uavhengig av minutter og sekundene som brukes. Hvis verdien av timen er den samme i mer enn en verdi, vil gruppeklausulen opprette en gruppe av dem. For eksempel 11:20:00 og 11:30:00. Dessuten trimmer kolonnen til dato_trunc timedelen fra tidsstempel og viser timedelen bare mens minuttet og sekund er '00'. Fordi ved å gjøre dette, kan gruppering bare gjøres.

Eksempel 2

Dette eksemplet omhandler å bruke en gruppe BY -klausul langs Date_Trunc () -funksjonen selv. En ny kolonne opprettes for å vise de resulterende radene med tellekolonnen som vil telle ID -ene, ikke alle radene. Sammenlignet med det siste eksemplet, erstattes stjerne -tegnet med ID i tellefunksjonen.

>> velg date_trunc ('time', c_period) som time_table, count (id) som count fra class_time group by date_trunc ('time', c_period);

De resulterende verdiene er de samme. TRUNC -funksjonen har avkortet timedelen fra tidsverdien, og ellers blir delen erklært som null. På denne måten blir gruppen etter timen erklært. PostgreSQL får den nåværende tiden fra systemet du har konfigurert PostgreSQL -databasen.

Eksempel 3

Dette eksemplet inneholder ikke trunc_date () -funksjonen. Nå vil vi hente timer fra tiden ved å bruke en ekstraktfunksjon. Extract () -funksjoner fungerer som trunc_date i å trekke ut den aktuelle delen ved å ha timen og den målrettede kolonnen som en parameter. Denne kommandoen er annerledes når det gjelder å jobbe og vise resultater i aspekter ved å gi timers verdi. Den fjerner minutt og sekund, i motsetning til trunc_date -funksjonen. Bruk SELECT -kommandoen til å velge ID og emne med en ny kolonne som inneholder resultatene av Extract -funksjonen.

>> Velg ID, Emne, Extract (time fra C_Period) som time fra klasse_tid;

Du kan observere at hver rad vises ved å ha timene hver gang i den respektive raden. Her har vi ikke brukt gruppen etter klausul for å utdype arbeidet med en ekstrakt () -funksjon.

Ved å legge til en gruppe etter klausul ved bruk av 1, vil vi få følgende resultater.

>> Velg Extract (time fra C_Period) som time fra Class_Time Group med 1;

Ettersom vi ikke har brukt noen kolonne i SELECT -kommandoen, så vil bare timekolonnen vises. Dette vil inneholde timene i gruppert form nå. Både 11 og 9 vises en gang for å vise den grupperte skjemaet.

Eksempel 4

Dette eksemplet tar for seg å bruke to kolonner i SELECT -setningen. Den ene er c_period, for å vise tiden, og den andre er nyopprettet som en time for å bare vise timene. Gruppen BY -klausulen brukes også på C_PERIOD og EXTRACT -funksjonen.

>> Velg _Period, Extract (time fra c_period) som time fra class_time group med ekstrakt (time fra c_period), c_periode;

Konklusjon

Artikkelen 'Postgres Group for time with Time' inneholder den grunnleggende informasjonen om gruppen etter klausul. For å implementere gruppe etter klausul med time, må vi bruke tidsdatatype i eksemplene våre. Denne artikkelen er implementert i PostgreSQL -databasen PSQL Shell installert på Windows 10.