De SQL GROUP BY-clausule wordt gebruikt om identieke gegevens in groepen te ordenen op basis van een of meer kolommen. Het wordt vaak gebruikt met aggregatiefuncties zoals COUNT() SUM() AVG() MAX() en MIN() om berekeningen uit te voeren op elke groep gegevens.
Voorbeeld: Eerst zullen we dat doen creëren een demo SQL-database en -tabel waarop we de opdracht GROUP BY zullen gebruiken.
Vraag:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Uitgang:
Syntaxis:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- geaggregeerde_functie: functie gebruikt voor aggregatie, b.v. SOM() AVG() COUNT().
- tabelnaam: naam van de tabel waaruit gegevens zijn geselecteerd.
- voorwaarde: Optionele voorwaarde om rijen te filteren voordat ze worden gegroepeerd (gebruikt met WHERE).
- kolom1 kolom2: Kolommen waarop de groepering wordt toegepast.
Voorbeelden van GROUP BY
Laten we aannemen dat we een Student-tabel hebben. We zullen enkele voorbeeldgegevens in deze tabel invoegen en vervolgens bewerkingen uitvoeren met GROUP BY om te begrijpen hoe rijen worden gegroepeerd op basis van een kolom en gegevens worden samengevoegd.
Voorbeeld 1: Groeperen op enkele kolom
Wanneer we groeperen op een enkele kolom, worden rijen met dezelfde waarde in die kolom gecombineerd. Groeperen op onderwerp laat bijvoorbeeld zien hoeveel studenten er voor elk onderwerp zijn ingeschreven.
Vraag:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Uitgang:
Uitleg: Elk onderwerp verschijnt twee keer in de tabel, dus het aantal voor Engelse wiskunde en wetenschappen is 2.
Voorbeeld 2: Groeperen op meerdere kolommen
Als u GROUP BY gebruikt met meerdere kolommen, worden rijen gegroepeerd die dezelfde waarden in die kolommen delen. Door bijvoorbeeld te groeperen op onderwerp en jaar worden rijen gecombineerd met hetzelfde vak-jaar-paar en kunnen we tellen hoeveel studenten in elke groep vallen.
Vraag:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Uitgang:
Uitleg: Studenten met hetzelfde vak en jaartal worden bij elkaar gegroepeerd. Omdat elk vak-jaar-paar twee keer voorkomt, bedraagt de telling 2 voor elke groep.
MET clausule in GROUP BY-clausule
De HAVING-clausule wordt gebruikt om resultaten na groepering te filteren, vooral wanneer u werkt met aggregatiefuncties zoals SUM() COUNT() of AVG(). In tegenstelling tot WHERE worden er voorwaarden toegepast op gegroepeerde gegevens.
Voorbeeld 1: Filter op totaal salaris
In deze zoekopdracht groeperen we werknemers op naam en geven we alleen degenen weer waarvan het totale salaris groter is dan 50.000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Uitvoer
Uitleg : Alleen werknemers waarvan het totale salaris hoger is dan 50.000, verschijnen in het resultaat.
Voorbeeld 2: Filter op gemiddeld salaris
In deze zoekopdracht groeperen we werknemers op leeftijd en geven we alleen die leeftijdsgroepen weer waar het gemiddelde salaris boven de 60.000 ligt.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Uitgang:
Uitleg: Deze zoekopdracht groepeert werknemers op leeftijd en berekent het gemiddelde salaris voor elke leeftijd. Alleen de leeftijdsgroepen waar het gemiddelde salaris hoger is dan 60.000 worden weergegeven.
Quiz maken