GROUP BY con una o più colonne
Raggruppi le righe per una o più colonne per produrre subtotali e suddivisioni per categoria e impari a leggere i piani delle query GROUP BY
GROUP BY con una o più colonne è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Cosa fa GROUP BY
GROUP BY suddivide le righe in gruppi in base ai valori di una o più colonne, quindi applica gli aggregati a ogni gruppo.
Raggruppamento per una colonna
Totale degli ordini per utente:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Raggruppamento per più colonne
Sottogruppi per categoria e paese:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Ogni colonna selezionata deve essere raggruppata o aggregata
Regola SQL standard:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY tramite espressione
Raggruppamento in base al risultato di un'espressione, ad esempio una fascia mensile:
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY tramite posizione o alias
È possibile raggruppare in base alla posizione o all'alias di un elemento dell'elenco SELECT (PostgreSQL):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionGrouping Sets, ROLLUP, CUBE
Calcoli più raggruppamenti in un'unica query, ideale per i subtotali:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalI gruppi vuoti non esistono
GROUP BY restituisce solo i gruppi che contengono almeno una riga. Se desidera visualizzare ogni categoria, comprese quelle con zero ordini, esegua un LEFT JOIN a partire dall'elenco principale ed esegua l'aggregazione.
GROUP BY e indici
Il pianificatore può utilizzare un'aggregazione hash, creando una tabella hash dei gruppi, oppure una strategia di ordinamento e raggruppamento. Gli indici sulla colonna di raggruppamento possono rendere veloce il secondo approccio.
Window Functions e GROUP BY
GROUP BY comprime le righe. Le funzioni finestra aggiungono colonne aggregate mantenendo ogni riga. Scelga lo strumento più adatto: l'argomento è trattato in Window Functions Deep Dive.
Alias in HAVING e WHERE
Ordine logico: FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE non può accedere agli aggregati, mentre HAVING può farlo.
Riepilogo
GROUP BY è lo strumento principale per la reportistica.
- Ogni colonna selezionata deve essere raggruppata o aggregata
- È possibile raggruppare per colonne, espressioni o alias
- Utilizzi ROLLUP/CUBE/GROUPING SETS per le tabelle a doppia entrata
Verifica rapida
In una query GROUP BY country, l'elenco SELECT può includere una colonna city che non è né aggregata né raggruppata?
Domande Frequenti
La lezione «GROUP BY con una o più colonne» è gratuita?
Sì — il testo completo di «GROUP BY con una o più colonne» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «GROUP BY con una o più colonne»?
Raggruppi le righe per una o più colonne per produrre subtotali e suddivisioni per categoria e impari a leggere i piani delle query GROUP BY Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «GROUP BY con una o più colonne»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY con una o più colonne
- HAVING rispetto a WHERE
- Problemi comuni: i NULL nelle aggregazioni