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