Introduktion til GROUP BY-klausul i SQL
I de tilfælde hvor vi er nødt til at gruppere rækkerne med den samme værdi Group By-klausul kommer ind i billedet. GROUP BY-klausulen er en kommando i SQL, der udfører denne handling.
Det vigtige punkt at huske her er, at GROUP BY-klausulen bruges i SELECT-sætningen i forespørgslen efter WHERE-klausulen er brugt.
Syntaks
Syntaks for gruppe efter klausul er -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Forklaring af syntaks
- VÆLG sætning - SQL-kommandoforespørgsel
- tabelnavn - navnet på databasetabellen, der henvises til
- betingelser - se betingelserne, der skal kontrolleres
- GROUP BY - klausul om at gruppere de samme rækker sammen
- ORDER BY - bruges altid efter Group By-klausul til at arrangere rækkerne i stigende eller faldende rækkefølge. Dette er en valgfri betingelse.
Hvordan GROUP BY-klausul fungerer i SQL?
Lad os tage hjælp fra et eksempel for at forstå, hvordan Group By-klausulen fungerer. Overvej en tabel med navn som MEDARBEJDERE, der indeholder de grundlæggende detaljer om medarbejderen som navn, alder, telefonnummer, dob, køn, adresse, e-mail-id osv.
Medarbejdertabel
navn | alder | telefon | køn | |
John | 23 | 123 | Han | |
Kan | 22 | 456 | Kvinde | |
Ana | 45 | 644 | Kvinde | |
gryder | 57 | 3456 | Kvinde | |
Res | 45 | 456 | Kvinde | |
Tan | 78 | 2456 | Han | |
Ran | 34 | 5899 | Han | |
Wan | 55 | 7789 | Kvinde | |
Tung | 32 | 5689 | Han | |
Chung | 21 | 4678 | Han |
Overvej, at medarbejderen har omkring 10 poster.
Lad os først hente de forskellige værdier for "køn" fra denne tabel. Forespørgslen, der vil hjælpe os med at nå vores mål, ville være -
SELECT gender FROM EMPLOYEE;
Dette giver os følgende værdier-
køn |
Han |
Kvinde |
Kvinde |
Kvinde |
Kvinde |
Han |
Han |
Kvinde |
Han |
Han |
Problemet her er redundans af værdierne, dvs. som vi kan se, der er kun to unikke værdier for køn i tabellen, men output giver ikke bare os de unikke værdier, men alle værdier, selvom de er gentagne.
Så for kun at få de unikke værdier fra tabellen, bruger vi følgende forespørgsel -
SELECT gender FROM EMPLOYEE GROUP BY gender;
Det resultat, vi modtager efter udførelsen af denne forespørgsel, vil være -
køn |
Han |
Kvinde |
Group By grupperer alle de samme værdier i rækkerne sammen og returnerer kun en enkelt indgang eller en enkelt række for dem, som det gjorde med rækkerne "Mand" og "Kvinde" i tabellen. Dette resulterede i kun to unikke værdier, der var til stede i “køn” -kolonnen i, f.eks. Kvinde og mand.
Lad os nu tage et andet eksempel på en tabel, der indeholder detaljerne i den afdeling, som hver af disse ansatte er knyttet til. Vi kalder dette en medarbejderafdelingstabel.
Tabel over medarbejderafdelingen
navn | hod | afdeling |
John | hod1 | Service |
Kan | hod2 | Finansiere |
Ana | hod1 | Service |
gryder | hod2 | Finansiere |
Res | hod3 | Tech |
Tan | hod5 | Support |
Ran | hod3 | Service |
Wan | hod3 | Tech |
Tung | hod3 | Finansiere |
Chung | hod5 | HR |
Så lad os nu udføre nedenstående forespørgsel og se efter resultatet -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Udførelsen af denne forespørgsel henter følgende resultat -
hod | afdeling |
hod1 | Service |
hod2 | Finansiere |
hod3 | Tech |
hod5 | Support |
hod3 | Service |
hod3 | Finansiere |
hod5 | HR |
GROUP BY-klausulen fungerer på både hodet og afdelingen for at se efter de unikke rækker i ovennævnte scenarie. Det kontrollerer kombinationen af hod og afdeling mod andre poster i hodet og afdelingen for at identificere dens unikke karakter. Hvis hodet er det samme, men afdelingen er anderledes, behandles den række som en unik. Hvis hodet og afdelingen er ens i mere end en række, oprettes ikke duplikatindgangen, og kun en række vises.
Gruppe efter klausuloperationer
Vi kan bruge gruppe efter klausul med flere grupperings- og aggregeringsfunktioner. Lad os tage et par eksempler ved hjælp af ovennævnte to nævnte tabeller, dvs. MEDARBEJDERE og Medarbejderafdeling.
Eksempel 1
At få antallet af mandlige ansatte og kvindelige ansatte i virksomheden.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Udførelsen af denne forespørgsel henter følgende resultat -
COUNT ( 'navn') | køn |
5 | Han |
5 | Kvinde |
Eksempel 2
At få antallet af afdelinger i virksomheden i faldende rækkefølge for antallet.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Udførelsen af denne forespørgsel henter følgende resultat -
COUNT ( 'navn') | afdeling |
3 | Service |
3 | Finansiere |
2 | Tech |
1 | Support |
1 | HR |
Eksempel 3
At få antallet af forskellige afdelinger under samme hoved i virksomheden i faldende rækkefølge for tællingen.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Udførelsen af denne forespørgsel henter følgende resultat -
COUNT ( 'navn') | hod | afdeling |
2 | hod1 | Service |
2 | hod2 | Finansiere |
2 | hod3 | Tech |
1 | hod5 | Support |
1 | hod3 | Service |
1 | hod3 | Finansiere |
1 | hod5 | HR |
HAVING-klausulen i SQL
Brug af HAVING-klausulen med Group By-klausulen vil begrænse resultatet af forespørgslen til rækkerne med den værdi, der er nævnt med Having-klausulen.
At forstå dette med et eksempel vil gøre det lettere -
Eksempel 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Udførelsen af denne forespørgsel henter følgende resultat -
navn | alder | telefon | køn | |
Kan | 22 | 456 | Kvinde | |
Ana | 45 | 644 | Kvinde | |
gryder | 57 | 3456 | Kvinde | |
Res | 45 | 456 | Kvinde | |
Wan | 55 | 7789 | Kvinde |
Eksempel 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Udførelsen af denne forespørgsel henter følgende resultat -
navn | hod | afdeling |
Kan | hod2 | Finansiere |
gryder | hod2 | Finansiere |
Tung | hod3 | Finansiere |
Konklusion
Ved hjælp af GROUP BY-klausulen med SELECT-sætningen kan vi gruppere rækker med de samme værdier sammen med brugen af samlede funktioner, konstanter og udtryk.
Anbefalede artikler
Dette er en guide til GROUP BY-klausulen i SQL. Her diskuterer vi, hvordan GROUP BY-klausul fungerer i SQL ved hjælp af eksempler og medarbejdertabeller. Du kan også se på de følgende artikler for at lære mere -
- SQL Indsæt forespørgsel
- SQL Views
- Database i SQL
- Transaktioner i SQL