Esercizio 1
Calcola il numero totale di libri con COUNT(*).
Numero di righe atteso: 1
SQL e database · Lezione
Usa COUNT, DISTINCT, MIN, MAX, AVG e SUM per trasformare tante righe in poche informazioni significative.
Le lezioni usano biblioteca.db: una tabella libri con otto record. Nel laboratorio a destra puoi provare subito le query e scaricare lo stesso database per continuare con DB Browser for SQLite.
Puoi sperimentare liberamente: se vuoi tornare agli otto libri iniziali, usa il pulsante «Ripristina».
COUNT(*) conta tutte le righe; COUNT(anno) conta soltanto i valori di anno diversi da NULL. Nel database iniziale coincidono perché tutti gli otto libri hanno un anno. L'aggregazione restituisce una riga con il conteggio, non una riga per ogni libro.
SELECT COUNT(*) AS numero_libri FROM libri;
Risultato atteso: Una riga: numero_libri = 8.
SELECT DISTINCT genere mostra ogni genere una sola volta. COUNT(DISTINCT genere) restituisce invece il numero dei generi diversi. AS assegna un nome leggibile alla colonna calcolata.
SELECT COUNT(DISTINCT genere) AS generi_diversi FROM libri;
Risultato atteso: Una riga: generi_diversi = 5.
MIN(anno) indica l'anno di pubblicazione più antico, MAX(anno) quello più recente e AVG(anno) la media aritmetica degli anni disponibili. La media può avere cifre decimali: in SQLite puoi usare ROUND(AVG(anno), 1) per mostrarne una.
SELECT MIN(anno) AS primo_anno, MAX(anno) AS ultimo_anno, ROUND(AVG(anno), 1) AS media_anni FROM libri;
Risultato atteso: Una riga: 1943, 1997, 1958,9 (circa).
WHERE filtra le righe prima che COUNT le conti. Qui chiediamo quanti libri sono stati pubblicati dopo il 1950, senza visualizzarne l'elenco. Per vedere quali sono, togli COUNT e usa SELECT titolo, anno.
SELECT COUNT(*) AS libri_dopo_1950 FROM libri WHERE anno > 1950;
Risultato atteso: Una riga: libri_dopo_1950 = 4.
SUM somma una colonna numerica: sommare gli anni di pubblicazione non ha un significato utile. Usiamo quindi un piccolo insieme temporaneo con il numero di copie disponibili per tre libri. La query non cambia biblioteca.db.
WITH copie(quantita) AS (VALUES (2), (3), (1)) SELECT SUM(quantita) AS copie_totali FROM copie;
Risultato atteso: Una riga: copie_totali = 6.
Puoi richiedere più funzioni aggregate nella stessa SELECT. Non confondere il numero delle righe del risultato (una) con il valore restituito da COUNT (otto). Anche le altre funzioni ignorano generalmente i valori NULL; COUNT(*) conta comunque le righe.
SELECT COUNT(*) AS totale, MIN(anno) AS prima_pubblicazione, MAX(anno) AS ultima_pubblicazione FROM libri;
Risultato atteso: Una riga: totale = 8, prima_pubblicazione = 1943, ultima_pubblicazione = 1997.
Scrivi una query per ogni consegna. Eseguila qui oppure in DB Browser; controlla colonne, righe e condizioni.
Calcola il numero totale di libri con COUNT(*).
Numero di righe atteso: 1
Calcola quanti autori distinti compaiono nella tabella.
Numero di righe atteso: 1
Trova il primo e l'ultimo anno di pubblicazione con MIN e MAX.
Numero di righe atteso: 1
Calcola la media degli anni di pubblicazione, arrotondata a una cifra decimale.
Numero di righe atteso: 1
Conta quanti libri sono stati pubblicati dopo il 1950.
Numero di righe atteso: 1
Conta i generi distinti presenti in biblioteca.db.
Numero di righe atteso: 1
Conta i libri di Fantascienza.
Numero di righe atteso: 1
Somma le quantità (2, 3, 1) del piccolo insieme temporaneo mostrato sopra.
Numero di righe atteso: 1
Premi «Controlla esercizio» per verificare il risultato. Se non riesci, usa «Aiutami»: riceverai suggerimenti graduali senza vedere subito la soluzione.
ConceptStep distingue ciò che è indispensabile da ciò che è consigliato o utile come rinforzo. Solo i prerequisiti obbligatori bloccano l'avanzamento.
Relazioni: linea continua = obbligatorio · linea tratteggiata = consigliato · linea puntinata = rinforzo.