La clàusula SQL GROUP BY s'utilitza per organitzar dades idèntiques en grups basats en una o més columnes. S'utilitza habitualment amb funcions agregades com COUNT() SUM() AVG() MAX() i MIN() per realitzar càlculs a cada grup de dades.
Exemple: Primer ho farem crear una base de dades SQL de demostració i una taula en què utilitzarem l'ordre GROUP BY.
Consulta:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Sortida:
Sintaxi:
text en negreta css
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- funció_agregada: funció utilitzada per a l'agregació, p. SUMA() MITJANA() COUNT().
- nom_taula: nom de la taula de la qual es seleccionen les dades.
- condició: Condició opcional per filtrar files abans d'agrupar (utilitzada amb ON).
- columna1 columna2: Columnes sobre les quals s'aplica l'agrupació.
Exemples de GROUP BY
Suposem que tenim una taula Estudiant. Inserirem algunes dades de mostra en aquesta taula i després realitzarem operacions amb GROUP BY per entendre com agrupa les files en funció d'una columna i agrega les dades.
Exemple 1: agrupa per columna única
Quan agrupem per una sola columna es combinen files amb el mateix valor en aquesta columna. Per exemple, l'agrupació per assignatures mostra quants alumnes hi ha matriculats a cada assignatura.
Consulta:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Sortida:
Explicació: Cada assignatura apareix dues vegades a la taula, de manera que el recompte de Matemàtiques i Ciències en anglès és 2.
Exemple 2: agrupar per múltiples columnes
L'ús de GROUP BY amb diverses columnes agrupa files que comparteixen els mateixos valors en aquestes columnes. Per exemple, l'agrupació per assignatura i curs combinarà files amb la mateixa parella assignatura-any i podem comptar quants alumnes formen cada grup.
Consulta:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Sortida:
Explicació: S'agrupen els alumnes de la mateixa assignatura i curs. Com que cada parella assignatura-any es produeix dues vegades, el recompte és 2 per a cada grup.
Clàusula HAVING a la clàusula GROUP BY
La clàusula HAVING s'utilitza per filtrar els resultats després de l'agrupació, especialment quan es treballa amb funcions agregades com SUM() COUNT() o AVG(). A diferència d'ON s'aplica condicions a les dades agrupades.
Exemple 1: filtre per salari total
En aquesta consulta, agrupem els empleats pel seu nom i mostrem només aquells el salari total dels quals és superior a 50.000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Sortida
Explicació : Només apareixen al resultat els empleats el salari total dels quals superi els 50.000.
Exemple 2: filtre per salari mitjà
En aquesta consulta agrupem els empleats per edat i mostrem només aquells grups d'edat on el salari mitjà és superior a 60.000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Sortida:
Explicació: Aquesta consulta agrupa els empleats per edat i calcula el salari mitjà per a cada edat. Només es mostren aquells grups d'edat on el salari mitjà és superior a 60.000.
Crea un qüestionari