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

  1. VÆLG sætning - SQL-kommandoforespørgsel
  2. tabelnavn - navnet på databasetabellen, der henvises til
  3. betingelser - se betingelserne, der skal kontrolleres
  4. GROUP BY - klausul om at gruppere de samme rækker sammen
  5. 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

navnaldertelefonkøne-mail
John23123Han
Kan22456Kvinde
Ana45644Kvinde
gryder573456Kvinde
Res45456Kvinde
Tan782456Han
Ran345899Han
Wan557789Kvinde
Tung325689Han
Chung214678Han

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

navnhodafdeling
Johnhod1Service
Kanhod2Finansiere
Anahod1Service
gryderhod2Finansiere
Reshod3Tech
Tanhod5Support
Ranhod3Service
Wanhod3Tech
Tunghod3Finansiere
Chunghod5HR

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 -

hodafdeling
hod1Service
hod2Finansiere
hod3Tech
hod5Support
hod3Service
hod3Finansiere
hod5HR

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
5Han
5Kvinde

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
3Service
3Finansiere
2Tech
1Support
1HR

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')hodafdeling
2hod1Service
2hod2Finansiere
2hod3Tech
1hod5Support
1hod3Service
1hod3Finansiere
1hod5HR

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 -

navnaldertelefonkøne-mail
Kan22456Kvinde
Ana45644Kvinde
gryder573456Kvinde
Res45456Kvinde
Wan557789Kvinde

Eksempel 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

Udførelsen af ​​denne forespørgsel henter følgende resultat -

navnhodafdeling
Kanhod2Finansiere
gryderhod2Finansiere
Tunghod3Finansiere

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 -

  1. SQL Indsæt forespørgsel
  2. SQL Views
  3. Database i SQL
  4. Transaktioner i SQL