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