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.

SQL
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 esempio AS month. In DuckDB puoi poi scrivere GROUP BY month; in alcuni altri database devi ripetere il calcolo.
  • Filtra prima di raggruppare. WHERE rimuove 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.

💡 Una tabella pronta per il grafico non ha celle vuote, ha un'unità chiara per colonna, come ordini o CHF, ed esattamente le righe che il grafico mostrerà. Se devi eliminare righe in un foglio di calcolo prima di creare il grafico, cambia invece la query.
Verifica delle conoscenze
Quale query restituisce una tabella corretta e pronta per il grafico degli ordini per regione?

Accedi per rispondere e tracciare il tuo progresso.

Accedi
</>
Babala Software Netzwerk — Apps, Websites & KI-Lösungen aus Füllinsdorf BL
© 2026 Babala Özdemir · UID CHE-322.105.560 babala.ch info@babala.ch 076 792 63 50 Facebook Instagram