GROUP BY (SQL)
Nel linguaggio SQL, un'istruzione GROUP BY
indica che la selezione SELECT
deve partizionare le righe del risultato in gruppi, in funzione del loro valore in una o più colonne. L'istruzione GROUP BY
si riferisce alle colonne e tipicamente è usata per sintetizzare i dati in una qualche funzione aggregata per ogni gruppo.[1][2]
Il risultato di una query avente l'istruzione GROUP BY
contiene una riga per ogni gruppo. Ciò implica la presenza di vincoli sulle colonne che possono comparire nella SELECT
. Come regola generale, la SELECT
può contenere solo colonne con un valore univoco per gruppo (i dati oggetto di selezione da parte della SELECT
possono anche contenere valori ripetuti e in particolare nulli, ma non i valori delle colonne rispetto a cui si ordina il risultato).[3]
Esempi
modificaRestituisce l'elenco dei DepartmentID con la relativa somma delle vendite a partire da gennaio 2000:
SELECT DeptID, SUM(SaleAmount) FROM Sales
WHERE SaleDate = '01-Jan-2000'
GROUP BY DeptID
Restituisce i dati della tabella pivot di esempio che risponde alla domanda: "Quante unità abbiamo venduto in ogni regione per ogni data di spedizione?":
SELECT Region, Ship_Date, SUM(Units) AS Sum_of_Units
FROM FlatData
GROUP BY Region, Ship_Date
Le più comuni funzioni di aggregazione sono:
- COUNT(espressione) - Quantità di record corrispondenti (per gruppo)
- SUM(espressione) - Somma dei valori dati (per gruppo)
- MIN(espressione) - Minimo dei valori dati (per gruppo)
- MAX(espressione) - Massimo dei valori dati (per gruppo)
- AVG(espressione) - Media dei valori dati (per gruppo)
Note
modifica- ^ SQL GROUP BY Statement, su w3schools.com.
- ^ (EN) hkale-msft, GROUP BY (Transact-SQL) - SQL Server, su docs.microsoft.com.
- ^ (EN) SQL Grouping and Aggregation, su databaselecture.com.