PostgreSQL - GROUP BY

PostgreSQL GROUP BY
klausulen brukes i samarbeid med SELECT-setningen til å gruppere sammen de radene i en tabell som har identiske data. Dette gjøres for å eliminere redundans i utgangs og /eller beregne aggregater som gjelder for disse gruppene.

GROUP BY-leddet følger WHERE-leddet i en SELECT-setning og forut ORDER BY-leddet.

Syntax:

Den grunnleggende syntaksen i GROUP BY-leddet er gitt nedenfor. GROUP BY-leddet må følge vilkårene i WHERE-leddet og må komme før ORDER BY-leddet hvis man er vant.
SELECT kolonne-listFROM table_nameWHERE [vilkår] GROUP BY COLUMN1, COLUMN2 .... columnNORDER BY COLUMN1, COLUMN2. ... columnN

Du kan bruke mer enn én kolonne i GROUP BY-leddet. Sørg uansett kolonnen du bruker til gruppen, bør den kolonnen være tilgjengelig i kolonnelisten

Eksempel:.

Tenk bordet COMPANY ha poster som følger:
# select * from BEDRIFT; id | Navn | alder | adressere | lønn ---- + ------- + ----- + ----------- + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norge | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 (7 p)

Hvis du ønsker å vite den totale mengden av lønn på hver kunde, så GROUP BY spørring vil være som følger:
testdb = # SELECT NAME, SUM (lønn) Fra KONSERN PÅ NAVN;

Dette vil gi følgende resultat:
navn | sum ------- + ------- Teddy | 20000 Paul | 20000 Mark | 65000 David | 85000 Allen | 15000 Kim | 45000 James | 10000 (7 p)

Nå, la oss lage tre flere poster i COMPANY tabellen ved hjelp av følgende INSERT-setninger:
INSERT INTO selskapsverdiene (8, 'Paul', 24 'Houston', 20000.00); INSERT INTO COMPANY VERDIER (9, 'James', 44 'Norge', 5000.00); INSERT INTO selskapsverdiene (10, 'James', 45 'Texas', 5000.00);

Nå har vårt bord følgende poster med duplisere navn:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + -------------- + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norge | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 9 | James | 44 | Norge | 5000 10 | James | 45 | Texas | 5000 (10 p)

Igjen, la oss bruke den samme setningen til gruppe av alle poster med NAVN kolonne som følger:
testdb = # SELECT NAME, SUM (lønn) Fra KONSERN PÅ NAVN ORDER BY NAME;

Dette vil gi følgende resultat:
navn | sum ------- + ------- Allen | 15000 David | 85000 James | 20000 Kim | 45000 Mark | 65000 Paul | 40000 Teddy | 20000 (7 p)

La oss bruke ORDER BY-ledd sammen med GROUP BY-ledd som følger:
testdb = # SELECT NAME, SUM (lønn) Fra KONSERN PÅ NAVN ORDER BY Navn synkende;

Dette ville produsere følgende resultat:
navn | sum ------- + ------- Teddy | 20000 Paul | 40000 Mark | 65000 Kim | 45000 James | 20000 David | 85000 Allen | 15000 (7 rader)