Le funzioni aggregate (come SUM, AVG, COUNT) spesso hanno bisogno della funzionalità GROUP BY.
GROUP BY... è stata inserita perchè le funzioni aggregate (come SUM) restituiscono un valore aggregato per tutte le colonne tutte le volte che vengono chiamate.
SELECT
Colonne,
Funzioni_Di_aggregazione
FROM Tabella
GROUP BY
Colonne
Prediamo in esame due tabelle:
Tabella Società
Societa | Codice |
---|---|
Microsoft | 1 |
Oracle | 2 |
Sun | 3 |
HP | 4 |
MorpheusWeb | 5 |
Tabella Ordini
NumeroOrdine | Importo | CodiceSocieta |
---|---|---|
1001 | 100 | 1 |
1002 | 200 | 2 |
1003 | 50 | 3 |
1004 | 300 | 4 |
1005 | 80 | 1 |
1006 | 120 | 2 |
SELECT
Societa,
SUM(Importo) AS Importo
COUNT(*) AS Ordini,
FROM Societa
LEFT OUTER JOIN Ordini
ON Societa.Codice = Ordini.CodiceSocieta
GROUP BY
Societa
ORDER BY
COUNT(*) DESC
Restituirà il seguente risultato
Societa | Importo | Ordini |
---|---|---|
Microsoft | 180 | 2 |
Oracle | 320 | 2 |
Sun | 50 | 1 |
HP | 300 | 1 |
MorpheusWeb | NULL | 0 |