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

  1. VELG setning - SQL-kommandosøk
  2. tabellnavn - navnet på databasetabellen det vises til
  3. forhold - se forholdene som skal sjekkes
  4. GROUP BY - klausul for å gruppere de samme radene sammen
  5. 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

Navnaldertelefonkjønne-post
John23123mann
Kan22456Hunn
Ana45644Hunn
kasseroller573456Hunn
Res45456Hunn
Tan782456mann
Løp345899mann
Wan557789Hunn
Tung325689mann
Chung214678mann

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

Navnhodavdeling
Johnhod1Service
Kanhod2Finansiere
Anahod1Service
kasserollerhod2Finansiere
Reshod3Tech
Tanhod5Brukerstøtte
Løphod3Service
Wanhod3Tech
Tunghod3Finansiere
Chunghod5HR

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 -

hodavdeling
hod1Service
hod2Finansiere
hod3Tech
hod5Brukerstøtte
hod3Service
hod3Finansiere
hod5HR

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
5mann
5Hunn

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
3Service
3Finansiere
2Tech
1Brukerstøtte
1HR

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')hodavdeling
2hod1Service
2hod2Finansiere
2hod3Tech
1hod5Brukerstøtte
1hod3Service
1hod3Finansiere
1hod5HR

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 -

Navnaldertelefonkjønne-post
Kan22456Hunn
Ana45644Hunn
kasseroller573456Hunn
Res45456Hunn
Wan557789Hunn

Eksempel 5

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

Utførelsen av denne spørringen henter følgende resultat -

Navnhodavdeling
Kanhod2Finansiere
kasserollerhod2Finansiere
Tunghod3Finansiere

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 -

  1. SQL Sett inn spørring
  2. SQL Views
  3. Database i SQL
  4. Transaksjoner i SQL