GROUP BY e HAVING
GROUP BY raccoglie righe con lo stesso valore e permette di ottenere una statistica per gruppo.
1. Il concetto, spiegato da zero
GROUP BY raccoglie righe con lo stesso valore e permette di ottenere una statistica per gruppo.
Puoi associare ogni classe al proprio voto medio. HAVING filtra gruppi già aggregati, mentre WHERE seleziona righe prima del raggruppamento.
2. Un esempio ragionato
Osserva l’esempio e leggi ogni istruzione nell’ordine. Prima di provarlo, fermati a prevedere cosa succederà; capire il motivo del risultato è più importante che memorizzare la sintassi.
SELECT classe_id, ROUND(AVG(voto), 1) AS media FROM studenti GROUP BY classe_id ORDER BY classe_id;Risultati confrontati con una tabella di riferimento, usando dati di esercitazione.
Come leggere questo esempio
- Prima di eseguire, prova a prevedere il risultato dell’esempio.
- Spiega con parole tue in che modo “group by e having” risolve un problema concreto.
- Rileggi ogni riga del programma e individua i valori che vengono creati o modificati.
- Modifica un valore; confronta il comportamento e annota che cosa è cambiato.
Non utilizzare WHERE AVG(voto) > 7: le condizioni aggregate appartengono a HAVING.
3. Adesso tocca a te
Obiettivo dell’esercizio: Mostra la media dei voti per classe.
Puoi partire dall’esempio, riprodurlo e poi modificarlo. La soluzione di riferimento è disponibile sotto, ma conviene aprirla soltanto dopo un primo tentativo.
Laboratorio: metti alla prova il codice
SQL · sqlLe query SQLite girano su dati di esempio in un database temporaneo nel browser. A ogni prova il database ricomincia da zero.
Output / esito del controllo
Il risultato comparirà qui.
Mostra la soluzione di riferimento
SELECT classe_id, ROUND(AVG(voto), 1) AS media FROM studenti GROUP BY classe_id ORDER BY classe_id;Confronta il tuo procedimento con quello dell’esempio. Una soluzione differente può essere altrettanto valida se produce risultati corretti.
4. Verifica e ripasso
Quiz: hai capito il concetto?
Quale delle seguenti affermazioni è corretta per questo capitolo?
Puoi associare ogni classe al proprio voto medio. HAVING filtra gruppi già aggregati, mentre WHERE seleziona righe prima del raggruppamento.
5. Come proseguire
Prima del capitolo successivo, prova a spiegare il concetto a un amico senza leggere il codice. Se non riesci, torna all’esempio e fai una nuova variante: imparare significa anche sperimentare.