
Introduksjon til GROUP BY-ledd i SQL
For tilfellene der vi trenger å gruppere radene med samme verdi Group By-klausul kommer inn i bildet. GROUP BY-leddet er en kommando i SQL som skal utføre denne operasjonen.
Det viktige poenget å huske her er at GROUP BY-klausulen brukes i SELECT-setningen i spørringen etter WHERE-leddet.
syntax
Syntaksen for gruppe etter ledd er -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Forklaring av syntaks
- VELG setning - SQL-kommandosøk
- tabellnavn - navnet på databasetabellen det vises til
- forhold - se forholdene som skal sjekkes
- GROUP BY - klausul for å gruppere de samme radene sammen
- BESTILL AV - brukes alltid etter gruppe etter klausul for å ordne radene i stigende eller synkende rekkefølge. Dette er en valgfri betingelse.
Hvordan GROUP BY Clause fungerer i SQL?
For å forstå bruken av Group By-klausulen, la oss ta hjelp av et eksempel. Vurder en tabell med navn som ANSATTE som inneholder de grunnleggende detaljene til den ansatte som navn, alder, telefonnummer, dob, kjønn, adresse, e-post-id, etc.
Ansattes tabell
| Navn | alder | telefon | kjønn | e-post |
| John | 23 | 123 | mann | |
| Kan | 22 | 456 | Hunn | |
| Ana | 45 | 644 | Hunn | |
| kasseroller | 57 | 3456 | Hunn | |
| Res | 45 | 456 | Hunn | |
| Tan | 78 | 2456 | mann | |
| Løp | 34 | 5899 | mann | |
| Wan | 55 | 7789 | Hunn | |
| Tung | 32 | 5689 | mann | |
| Chung | 21 | 4678 | mann |
Tenk på at den ansatt har rundt 10 oppføringer.
La oss først hente de forskjellige verdiene for "kjønn" fra denne tabellen. Spørsmålet som vil hjelpe oss med å oppnå vårt mål vil være -
SELECT gender FROM EMPLOYEE;
Dette vil gi oss følgende verdier-
| kjønn |
| mann |
| Hunn |
| Hunn |
| Hunn |
| Hunn |
| mann |
| mann |
| Hunn |
| mann |
| mann |
Problemet her er redundans av verdiene, dvs. som vi kan se er det bare to unike verdier for kjønn i tabellen, men utdataene gir oss ikke bare de unike verdiene, men alle verdiene, selv om de er repeterende.
Så for å få bare de unike verdiene fra tabellen, bruker vi følgende spørring -
SELECT gender FROM EMPLOYEE GROUP BY gender;
Resultatet vi får etter å ha utført denne spørringen, vil være -
| kjønn |
| mann |
| Hunn |
Group By vil gruppere alle de samme verdiene i radene sammen og returnere bare en enkelt oppføring eller en enkelt rad for dem som det gjorde med “Male” og “Female” radene i tabellen. Dette resulterte i bare to unike verdier som var til stede i "kjønn" -kolonnen i, f.eks. Kvinne og mann.
La oss nå ta et annet eksempel på en tabell som inneholder detaljene i avdelingen som hver av disse ansatte er tilknyttet. Vi vil kalle dette en ansatte-avdelingstabell.
Tabell over ansatteavdelinger
| Navn | hod | avdeling |
| John | hod1 | Service |
| Kan | hod2 | Finansiere |
| Ana | hod1 | Service |
| kasseroller | hod2 | Finansiere |
| Res | hod3 | Tech |
| Tan | hod5 | Brukerstøtte |
| Løp | hod3 | Service |
| Wan | hod3 | Tech |
| Tung | hod3 | Finansiere |
| Chung | hod5 | HR |
Så la oss utføre spørringen nedenfor og se etter resultatet -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Utførelsen av denne spørringen henter følgende resultat -
| hod | avdeling |
| hod1 | Service |
| hod2 | Finansiere |
| hod3 | Tech |
| hod5 | Brukerstøtte |
| hod3 | Service |
| hod3 | Finansiere |
| hod5 | HR |
GROUP BY-leddet fungerer på både hodet og avdelingen for å se etter de unike radene i det ovennevnte scenariet. Den vil sjekke kombinasjonen av hod og avdeling mot andre oppføringer i hodet og avdelingen for å identifisere dets unike. Hvis hodet er det samme, men avdelingen er annerledes, blir den rekken behandlet som en unik. Hvis hodet og avdelingen er den samme i mer enn en rad, opprettes ikke duplikatoppføringen, og bare en rad vises.
Gruppe etter klausuldrift
Vi kan bruke gruppe etter klausul med flere grupperings- og aggregatfunksjoner. La oss ta noen få eksempler ved å bruke de to ovennevnte tabellene, dvs. ANSATTE og Employee_Department.
Eksempel 1
Få antall mannlige ansatte og kvinnelige ansatte i selskapet.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Utførelsen av denne spørringen henter følgende resultat -
| COUNT ( 'name') | kjønn |
| 5 | mann |
| 5 | Hunn |
Eksempel 2
Få antall avdelinger i selskapet i synkende rekkefølge.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Utførelsen av denne spørringen henter følgende resultat -
| COUNT ( 'name') | avdeling |
| 3 | Service |
| 3 | Finansiere |
| 2 | Tech |
| 1 | Brukerstøtte |
| 1 | HR |
Eksempel 3
Å få antall forskjellige avdelinger under samme hodet i selskapet i fallende rekkefølge.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Utførelsen av denne spørringen henter følgende resultat -
| COUNT ( 'name') | hod | avdeling |
| 2 | hod1 | Service |
| 2 | hod2 | Finansiere |
| 2 | hod3 | Tech |
| 1 | hod5 | Brukerstøtte |
| 1 | hod3 | Service |
| 1 | hod3 | Finansiere |
| 1 | hod5 | HR |
HAVING-leddet i SQL
Bruk av HAVING-leddet med Group By-klausulen vil begrense resultatet av spørringen til radene med verdien nevnt med Having-klausulen.
Å forstå dette med et eksempel vil gjøre det lettere -
Eksempel 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Utførelsen av denne spørringen henter følgende resultat -
| Navn | alder | telefon | kjønn | e-post |
| Kan | 22 | 456 | Hunn | |
| Ana | 45 | 644 | Hunn | |
| kasseroller | 57 | 3456 | Hunn | |
| Res | 45 | 456 | Hunn | |
| Wan | 55 | 7789 | Hunn |
Eksempel 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Utførelsen av denne spørringen henter følgende resultat -
| Navn | hod | avdeling |
| Kan | hod2 | Finansiere |
| kasseroller | hod2 | Finansiere |
| Tung | hod3 | Finansiere |
Konklusjon
Ved å bruke GROUP BY-leddet med SELECT-setningen kan vi gruppere rader med de samme verdiene sammen med bruk av samlede funksjoner, konstanter og uttrykk.
Anbefalte artikler
Dette er en guide til GROUP BY-leddet i SQL. Her diskuterer vi hvordan GROUP BY Clause fungerer i SQL ved hjelp av eksempler og ansatte-tabeller. Du kan også se på følgende artikler for å lære mer -
- SQL Sett inn spørring
- SQL Views
- Database i SQL
- Transaksjoner i SQL