Progetto finale: report scolastico
Un report utile combina query, filtri, raggruppamenti e collegamenti tra tabelle.
1. Il concetto, spiegato da zero
Un report utile combina query, filtri, raggruppamenti e collegamenti tra tabelle.
Il progetto consiste nel produrre per ogni classe il numero di studenti e il voto medio. Parti dalle singole tabelle, verifica il JOIN e solo alla fine aggiungi GROUP BY.
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 c.nome AS classe, COUNT(s.id) AS totale, ROUND(AVG(s.voto), 2) AS media
FROM classi c LEFT JOIN studenti s ON s.classe_id = c.id
GROUP BY c.id ORDER BY c.nome;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 “progetto finale: report scolastico” 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.
COUNT(*) in un LEFT JOIN può contare anche la riga senza studente: usa COUNT(s.id).
3. Adesso tocca a te
Obiettivo dell’esercizio: Realizza un report delle classi con numero studenti e media.
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 c.nome AS classe, COUNT(s.id) AS totale, ROUND(AVG(s.voto), 2) AS media
FROM classi c LEFT JOIN studenti s ON s.classe_id = c.id
GROUP BY c.id ORDER BY c.nome;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?
Il progetto consiste nel produrre per ogni classe il numero di studenti e il voto medio. Parti dalle singole tabelle, verifica il JOIN e solo alla fine aggiungi GROUP BY.
Progetto finale completo: Cruscotto scolastico SQL
Un istituto vuole conoscere numero studenti e rendimento per classe senza perdere le classi ancora vuote.
Le quattro tappe del progetto
- Definisci schema classi/studenti con chiave primaria e collegamento coerente.
- Scrivi una query LEFT JOIN che mostri anche classi senza studenti.
- Aggiungi media, conteggio e ordinamento con alias comprensibili.
- Prepara query di verifica su classe vuota e voto NULL; valuta un indice.
Che cosa consegnare
Un file .sql con schema, dati fittizi e almeno cinque query documentate.
Come valutarti
Il progetto è riuscito quando tutte le funzionalità descritte funzionano con dati normali e casi limite. Rileggi i messaggi di errore, documenta come avviare il codice e conserva una copia di lavoro nel tuo IDE. Puoi aggiungerlo al tuo portfolio personale.
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.