SQL GROUP BY
SQL GROUP BY-satsen används för att ordna identiska data i grupper baserade på en eller flera kolumner. Det används ofta med aggregerade funktioner som COUNT() SUM() AVG() MAX() och MIN() för att utföra beräkningar på varje grupp av data.
Exempel: Först ska vi skapa en demo SQL-databas och tabell där vi kommer att använda GROUP BY-kommandot.
Fråga:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Produktion:
![]()
Syntax:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
- aggregate_function: funktion som används för aggregering t.ex. SUM() AVG() COUNT().
- tabellnamn: namnet på tabellen från vilken data väljs.
- skick: Valfritt villkor för att filtrera rader före gruppering (används med WHERE).
- kolumn1 kolumn2: Kolumner där grupperingen tillämpas.
Exempel på GROUP BY
Låt oss anta att vi har ett studentbord. Vi kommer att infoga några exempeldata i den här tabellen och sedan utföra operationer med GROUP BY för att förstå hur den grupperar rader baserat på en kolumn och aggregerar data.
Exempel 1: Gruppera efter enstaka kolumn
När vi grupperar efter en enda kolumn kombineras rader med samma värde i den kolumnen. Gruppering efter ämne visar till exempel hur många elever som är inskrivna i varje ämne.
Fråga:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Produktion:
![]()
Förklaring: Varje ämne förekommer två gånger i tabellen så antalet för engelsk matematik och naturvetenskap är 2.
Exempel 2: Gruppera efter flera kolumner
Genom att använda GROUP BY med flera kolumner grupperas rader som delar samma värden i dessa kolumner. Till exempel kommer gruppering efter ämne och år att kombinera rader med samma ämne-år-par och vi kan räkna hur många elever som ingår i varje grupp.
Fråga:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Produktion:
![]()
Förklaring: Elever med samma ämne och år grupperas tillsammans. Eftersom varje ämne-år-par förekommer två gånger är räkningen 2 för varje grupp.
HA Klausul i GROUP BY Klausul
HAVING-satsen används för att filtrera resultat efter gruppering, särskilt när man arbetar med aggregerade funktioner som SUM() COUNT() eller AVG(). Till skillnad från WHERE tillämpar den villkor på grupperad data.
![]()
Exempel 1: Filtrera efter total lön
I den här frågan grupperar vi anställda efter namn och visar endast de vars totala lön är större än 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000;Produktion
![]()
Förklaring : Endast anställda vars totala lön överstiger 50 000 visas i resultatet.
Exempel 2: Filtrera efter genomsnittlig lön
I den här frågan grupperar vi anställda efter ålder och visar endast de åldersgrupper där medellönen är över 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Produktion:
![]()
Förklaring: Denna fråga grupperar anställda efter ålder och beräknar genomsnittslönen för varje ålder. Endast de åldersgrupper där medellönen är högre än 60 000 visas.
Skapa frågesport