Syntaks av gruppe etter klausul
PLUKKE UTName_of_function er den innebygde funksjonen som for det meste som tellefunksjonen for å telle antall rader som skal grupperes deretter. Mens vi i tilfelle av to kolonner som skal brukes i en valgt uttalelse, bruker vi begge kolonnene i SELECT og i gruppen BY -klausul.
Implementering av gruppe om dagen
Tenk på eksemplet nedenfor, der vi har et bord som heter et land som inneholder all informasjon om land, ID, navn og kontinentnavn. Vi vil bruke en gruppe-for-kommando på tabellen.
Gruppe BY -klausul brukes på kolonnen, så vi har valgt kontinentkolonnen for å gruppere landene på samme kontinent. Først velger vi den spesifikke kolonnen vi vil gruppere. Jeg.e., kontinent. Så lager vi en ny kolonne for å vise resultatet i det. Denne resulterende kolonnen heter Same_area. Den innebygde funksjonen til PostgreSQL Count () brukes her for å telle de ID-ene som har de samme kontinentene.
>> Velg kontinent som Same_Area, Count (ID) fra Country Group etter kontinent;Dette vil gi følgende resultater i en nyopprettet kommando med tellekolonnen om utførelse. Så resultatet viser at to kontinenter vises 2 ganger i en tabell. Disse to samme kontinentene nevnes samlet for å danne en gruppe ved å bruke en gruppe etter klausul.
Gruppe om dagen
Som vi har sett, brukes en gruppe BY -klausul med et spesifikt kolonnens navn, hvor den utfører hele uttalelsen. Nå vil vi bruke noen eksempler til å gruppere data fra tabellen kollektivt i henhold til dager fra dataene vi har brukt i tabeller. Her vil bli opprettet et nytt forhold for å implementere et nytt eksempel. Så ved å bruke S CREATE -kommandoen opprettes en tabell som heter test med 3 kolonner, ID, Subject_Name og Test_Date; Datatypen for denne variabelen brukes som dato fordi vi må gruppere data fra tabellen i henhold til dagen.
>> Opprett tabelltest (id heltall, emne_name varchar (10), test_date date);Etter å ha opprettet tabellen, må vi sette inn verdier i tabellen gjennom en innsatserklæring. Mens man setter inn data, bør man sørge for at de innsatte verdiene inneholder de samme datoene i to eller flere rader for å unngå konflikt mens de grupperer radene deretter. Fordi forskjellige data ikke vil bli gruppert. Test_date-kolonnen inneholder datoer i henhold til datoformatet til den innebygde datofunksjonen og skal skrives i omvendt komma.
>> sett inn i test (id, emne_name, test_date) verdier ('1', 'engelsk', '2022-11-22'), ('2', 'kjemi', '2022-8-06'), (( '3', 'Socialogy', '2022-11-22'), ('4', 'Math', '2022-8-06'), ('5', 'engelsk', '2022-03-08 '), (' 6 ',' Fysikk ',' 2022-06-19 ');For å se de angitte dataene i tabellen, bruk en valgt kommando for å se posten.
>> Velg * fra test;Du kan se at noen rader i test_date -kolonnene ser like ut.
Eksempel 1
Vi bruker Select Query med gruppen BY -klausul for å kombinere de samme verdiene.
Denne kommandoen inneholder den innebygde datofunksjonen for å hente dagene bare fra datoverdien som er angitt. Denne funksjonen tar nøkkelordet 'Day' for å hente dager, og kolonnenavnet som denne funksjonen skal brukes på som en parameter. Og spesifiser deretter en ny resulterende kolonne; Count () -funksjonen vil telle de totale ID -ene som er de samme. Og utvalget er gruppert etter de resulterende dagene som er konvertert fra datoene vi har brukt.
Ved utførelse vil du se resultatet ovenfor. Du kan se at de radene som har de samme datoene kombineres som en gruppe.
Eksempel 2
Igjen vurdere eksemplet ovenfor, men vi har gruppert dataene ved å bruke to kolonner denne gangen. Vi må velge de to elementene vi ønsker å bruke med gruppen BY -klausulen; Ellers utfører ikke PostgreSQL kommandoen. Vi har brukt ID og datakolonnen.
Denne gangen er ikke verdiene gruppert. For når vi bruker gruppe etter klausul med mer enn en kolonne, blir klausulen først brukt på den første kolonnen, og deretter blir resultatene av det videre gruppert i henhold til den andre kolonnen. Så denne resulterende tabellen viser at ingen rad er gruppert ettersom alle ID -ene er forskjellige. Hver ID -antall viser 1 for hver rad.
Eksempel 3
Datoene som har samme dagstall og forskjellige månedstall er ikke gruppert. Det er nødvendig å ha dager, måneder og år det samme; Ellers har raden samme dag, men forskjellige måneder og år er ikke gruppert i henhold til dagene. Disse ble regnet som separate rader. For å forstå dette konseptet, vil vi igjen sette inn en annen rad med dagen samme, men forskjellige andre attributter av datoer.
Ved å anvende den samme gruppen etter klausul i SELECT-setningen, vil vi få det nedenfor siterte resultatet. Du kan observere at den nyinngitte raden ikke er gruppert.
Eksempel 4
De foregående eksemplene omhandler ekstraksjon og gruppering av dagen i henhold til datofunksjonen. Men nå vil vi bruke dagene med ukens navn som en strengverdi. Vi vil bruke en gruppe BY -klausul for å gruppere radene i henhold til de samme dagene. Lag en ny tabell som heter Match med ID, navn og kampens dag som attributter.
Nå vil vi legge inn data ved å bruke en innsatserklæring. Dataene fra kolonnedagen vil inneholde navnet på dager med noen lignende verdier.
Nå vil vi bruke gruppen etter klausul om å kombinere de samme dagene i dagskolonnen som en resulterende kolonne i en Combine_match.
>> Velg Day som Combine_Match, Count (ID) som telling fra kampgruppe om dagen;I følge kommandoen er de samme dagene gruppert i kolonnen. Og de som ikke var de samme, blir nevnt uavhengig.
Nå vil vi igjen sette inn en rad med samme navn på kampen med samme navn på dagen. De foregående radene har data som har forskjellige kampnavn med de samme dagene.
Bruk gruppen etter klausul sammen med to kolonnenavn og dagen. Nå er det bare de radene med samme navn og dager er gruppert. Mens andre vises uten å gruppere.
>> velg navn, dag, count (id) fra kampgruppe etter navnedag;Konklusjon
Artikkelen 'Postgres Group by Day' beskriver implementeringen i PostgreSQL -språk på Windows 10 ved å bruke PSQL Shell. Vi har inkludert de innebygde funksjonene på datofunksjonene og også på manuelt lagt inn data gjennom kommandoer. Gruppen BY -klausul hjelper med å administrere data for å holde samme type data justert og intakt.