Corsi › Decisioni basate sui dati: dalla domanda alla risposta
Raggruppare in una tabella pronta per il grafico
Lezione 6 di 8 · 13 min
Una riga per barra
Un grafico è una tabella travestita. Un grafico a barre del fatturato per fonte richiede esattamente una riga per fonte e una colonna per valore. Passare da migliaia di righe di ordini a una manciata di righe di riepilogo è il compito di GROUP BY.
SELECT source,
COUNT(*) AS orders,
ROUND(SUM(net_amount), 2) AS revenue
FROM orders
WHERE status = 'delivered'
AND order_date >= '2026-01-01'
AND order_date < '2026-04-01'
GROUP BY source
ORDER BY revenue DESC;GROUP BY source comprime tutte le righe con la stessa fonte in un'unica riga, e gli aggregati come COUNT e SUM lavorano poi all'interno di ogni gruppo. Ogni colonna in SELECT deve o comparire in GROUP BY o trovarsi dentro un aggregato. Altrimenti SQL non può sapere quale dei tanti valori di un gruppo mostrare.
Per il primo trimestre 2026 il risultato mette direct al primo posto con CHF 14'711.70, poi la ricerca a pagamento con CHF 5'798.60 e l'organico con CHF 5'716.96. Il social è ultimo con CHF 2'662.37. Leggilo con attenzione: source è la fonte della visita che ha portato all'ordine. Dei 273 ordini effettuati da visite dirette in quel trimestre, solo 22 erano un primo ordine. Questa tabella mostra dove arrivano gli ordini, non quale canale ha conquistato il cliente.
Raggruppare per un valore calcolato
Per raggruppare per mese, calcola il mese a partire dalla data. strftime(order_date, '%Y-%m') formatta una data come testo, ad esempio 2025-07. Poiché il testo inizia con l'anno, ordinarlo ordina anche i mesi in ordine cronologico.
- Assegna un nome alla colonna calcolata con
AS, per esempioAS month. In DuckDB puoi poi scrivereGROUP BY month; in alcuni altri database devi ripetere il calcolo. - Filtra prima di raggruppare.
WHERErimuove le righe prima che vengano raggruppate, così gli ordini annullati non arrivano mai alle somme. - Ordina le righe nel modo in cui si legge il grafico: i mesi per tempo, le categorie per dimensione.
- Mantieni il numero di righe abbastanza piccolo da poter essere letto. Otto regioni o dodici mesi fanno un buon grafico; 96 prodotti di solito richiedono una top 10 e una riga per il resto.
Che aspetto ha l'anno
Raggruppato per mese, il fatturato consegnato nel 2025 va da CHF 7'963.79 a luglio a CHF 18'373.89 a dicembre. Dicembre non ha avuto il maggior numero di ordini; è stato novembre, con 273. I carrelli di dicembre erano i più grandi, in media CHF 70.67. Il secondo trimestre 2025 ha portato CHF 37'265.67.
Gli ordini e il fatturato non classificano sempre i gruppi allo stesso modo. Nel 2025 Ginevra ha avuto 272 ordini consegnati e Basilea 264, eppure Basilea ha portato più fatturato, CHF 16'079.85 contro CHF 15'744.15, perché i suoi ordini erano più grandi in media. Quando due valori potrebbero raccontare storie diverse, entrambe le colonne appartengono alla tabella.
Questa struttura conta per Lena in due modi. Il secondo trimestre non è alta stagione, quindi un fatturato piatto da aprile a giugno non dimostrerebbe che un nuovo budget è fallito. E i risultati per canale di dicembre non dovrebbero essere confrontati con quelli di luglio senza dirlo nella nota.
Accedi per rispondere e tracciare il tuo progresso.
Accedi