Inleiding tot GROUP BY-clausule in SQL

Voor de gevallen waarin we de rijen met dezelfde waarde moeten groeperen, komt de clausule Group by in beeld. De clausule GROUP BY is een opdracht in SQL waarmee deze bewerking wordt uitgevoerd.

Het belangrijke punt om te onthouden is dat de clausule GROUP BY wordt gebruikt in de SELECT-instructie in de query nadat de clausule WHERE is gebruikt.

Syntaxis

De syntaxis voor de Group By-clausule is -

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Verklaring van de syntaxis

  1. SELECT-instructie - SQL-opdrachtquery
  2. tabelnaam - de naam van de databasetabel waarnaar wordt verwezen
  3. voorwaarden - raadpleeg de te controleren voorwaarden
  4. GROUP BY - clausule om dezelfde rijen bij elkaar te groeperen
  5. ORDER BY - altijd gebruikt na Group By-clausule voor het rangschikken van de rijen in oplopende of aflopende volgorde. Dit is een optionele voorwaarde.

Hoe GROUP BY-clausule werkt in SQL?

Laten we een voorbeeld nemen om de werking van de Group By-clausule te begrijpen. Overweeg een tabel met naam als WERKNEMER die de basisgegevens van de werknemer bevat, zoals naam, leeftijd, telefoonnummer, nummer, geslacht, adres, e-mailadres, enz.

Werknemers tabel

naamleeftijdtelefoongeslachte-mail
John23123Mannetje
mei22456Vrouw
Ana45644Vrouw
pannen573456Vrouw
Res45456Vrouw
Bruinen782456Mannetje
Ran345899Mannetje
Wan557789Vrouw
Tung325689Mannetje
Chung214678Mannetje

Overweeg dat de WERKNEMER ongeveer 10 inzendingen heeft.

Laten we eerst de verschillende waarden van 'geslacht' uit deze tabel halen. De vraag die ons helpt ons doel te bereiken is -

SELECT gender FROM EMPLOYEE;

Dit geeft ons de volgende waarden-

geslacht
Mannetje
Vrouw
Vrouw
Vrouw
Vrouw
Mannetje
Mannetje
Vrouw
Mannetje
Mannetje

Het probleem hier is de redundantie van de waarden, dwz zoals we kunnen zien zijn er slechts twee unieke waarden van geslachten in de tabel, maar de uitvoer geeft ons niet alleen de unieke waarden, maar alle waarden, zelfs als ze repetitief zijn.

Dus, om alleen de unieke waarden uit de tabel te krijgen, zullen we de volgende query gebruiken -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Het resultaat dat we ontvangen na het uitvoeren van deze zoekopdracht is -

geslacht
Mannetje
Vrouw

De groep Door groepeert alle dezelfde waarden in de rijen samen en retourneert slechts één invoer of een enkele rij voor hen zoals bij de rijen "Man" en "Vrouw" in de tabel. Dit resulteerde in slechts twee unieke waarden die aanwezig waren in de kolom "geslacht" i, e. Vrouwelijk en mannelijk.

Laten we nu een ander voorbeeld nemen van een tabel met de details van de afdeling waaraan elk van deze medewerkers is gekoppeld. We noemen dit een Employee_Department-tabel.

Werknemer Afdeling Tabel

naammortelbakafdeling
Johnhod1Onderhoud
meihod2Financiën
Anahod1Onderhoud
pannenhod2Financiën
Reshod3tech
Bruinenhod5Ondersteuning
Ranhod3Onderhoud
Wanhod3tech
Tunghod3Financiën
Chunghod5HR

Laten we nu de onderstaande zoekopdracht uitvoeren en het resultaat zoeken -

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

De uitvoering van deze query haalt het volgende resultaat op:

mortelbakafdeling
hod1Onderhoud
hod2Financiën
hod3tech
hod5Ondersteuning
hod3Onderhoud
hod3Financiën
hod5HR

De clausule GROUP BY werkt op zowel de hod als de afdeling om te zoeken naar de unieke rijen in het bovengenoemde scenario. Het zal de combinatie van hod en afdeling vergelijken met andere vermeldingen van de hod en afdeling om het unieke ervan te identificeren. Als de hod hetzelfde is, maar de afdeling anders is, wordt die rij als een unieke behandeld. Als de hod en de afdeling meer dan één rij hetzelfde zijn, wordt de dubbele invoer niet gemaakt en wordt slechts één rij weergegeven.

GROUP BY Clausule-activiteiten

We kunnen Group By-clausule gebruiken met verschillende groeperings- en aggregatiefuncties. Laten we een paar voorbeelden nemen met behulp van de twee bovengenoemde tabellen, namelijk WERKNEMER en Werknemer_afdeling.

Voorbeeld 1

Het aantal mannelijke en vrouwelijke werknemers in het bedrijf tellen.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

De uitvoering van deze query haalt het volgende resultaat op:

COUNT ( 'name')geslacht
5Mannetje
5Vrouw

Voorbeeld 2

De telling van afdelingen in het bedrijf in aflopende volgorde van de telling krijgen.

SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;

De uitvoering van deze query haalt het volgende resultaat op:

COUNT ( 'name')afdeling
3Onderhoud
3Financiën
2tech
1Ondersteuning
1HR

Voorbeeld 3

De telling van verschillende afdelingen onder dezelfde hod in het bedrijf krijgen in aflopende volgorde van de telling.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

De uitvoering van deze query haalt het volgende resultaat op:

COUNT ( 'name')mortelbakafdeling
2hod1Onderhoud
2hod2Financiën
2hod3tech
1hod5Ondersteuning
1hod3Onderhoud
1hod3Financiën
1hod5HR

De clausule HAVING in SQL

Het gebruik van de clausule HAVING met de clausule Group By beperkt het resultaat van de query tot de rijen met de waarde die wordt vermeld met de clausule Have.

Als u dit begrijpt met een voorbeeld, wordt het eenvoudiger -

Voorbeeld 4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

De uitvoering van deze query haalt het volgende resultaat op:

naamleeftijdtelefoongeslachte-mail
mei22456Vrouw
Ana45644Vrouw
pannen573456Vrouw
Res45456Vrouw
Wan557789Vrouw

Voorbeeld 5

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

De uitvoering van deze query haalt het volgende resultaat op:

naammortelbakafdeling
meihod2Financiën
pannenhod2Financiën
Tunghod3Financiën

Conclusie

Met behulp van de GROUP BY-component met de SELECT-instructie kunnen we rijen met dezelfde waarden groeperen, samen met het gebruik van aggregatiefuncties, constanten en expressies.

Aanbevolen artikelen

Dit is een handleiding voor de GROUP BY-clausule in SQL. Hier bespreken we hoe GROUP BY-clausule in SQL werkt met behulp van voorbeelden en werknemer-tabellen. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Query invoegen
  2. SQL-weergaven
  3. Database in SQL
  4. Transacties in SQL