Schema relazionale
- STUDENTI(IDstudente, Cognome, Nome, Città, DataNascita, NumDebiti)
- VALUTAZIONI(IDvalutazione, Voto, Data, studenteID, provaID)
- PROVE(IDprova, Tipo, Peso)
VALUTAZIONI.provaID è chiave esterna collegata a PROVE.IDprova
VALUTAZIONI.studenteID è chiave esterna collegata a STUDENTI.IDstudente
Query
- Le città di provenienza degli studenti
SELECT DISTINCT Città FROM STUDENTI ORDER BY Città
- Gli studenti che non hanno ancora comunicato la data di nascita
SELECT * FROM STUDENTI WHERE DataNascita IS NULL
- Gli studenti di Feltre che hanno un cognome simile a “rosa”
SELECT * FROM STUDENTI WHERE (Citta = "Feltre") AND (Cognome LIKE "*rosa*")
- Gli studenti con il cognome e nome uguale a qualche altro studente
SELECT S1.* FROM STUDENTI AS S1, STUDENTI AS S2 WHERE (S1.Cognome = S2.Cognome) AND (S1.Nome = S2.Nome) AND (S1.IDstudente <> S2.Studente)
- Le coppie di studenti con il cognome e nome uguale a qualche altro studente
SELECT S1.*, S2.* FROM STUDENTI AS S1, STUDENTI AS S2 WHERE (S1.Cognome = S2.Cognome) AND (S1.Nome = S2.Nome) AND (S1.IDstudente < S2.IDStudente)
- Gli studenti con almeno un voto superiore all'otto conseguito nell'anno corrente
SELECT DISTINCT IDstudente, Cognome, Nome FROM STUDENTI INNER JOIN VALUTAZIONI WHERE (VALUTAZIONI.Voto > 8) AND (VALUTAZIONI.DATA = Year(Now()))
- Quanti studenti
SELECT Count(*) AS [Numero studenti] FROM STUDENTI
Quanti debiti
SELECT Sum(NumDebiti) AS [Numero debiti] FROM STUDENTI
- Quanti studenti di una certa città
SELECT Count(*) AS [Numero studenti] FROM STUDENTI WHERE Città = [Quale città?]
- Quanti debiti degli studenti di Feltre, Pedavena e Alano
SELECT Sum(NumDebiti) AS [Numero di debiti] FROM STUDENTI WHERE Città IN ("Alano", "Feltre", "Pedavena")
- Quanti studenti con un certo anno di nascita
SELECT Count(*) AS [Numero studenti] FROM STUDENTI WHERE Year(DataNascita) = [Anno di nascita?]
- La situazione di un certo studente
SELECT Count(*) AS [Numero valutazioni], Min(Voto) AS [Voto minimo], Avg(Voto) AS [Voto medio] , Max(Voto) AS [Voto massimo] FROM STUDENTI INNER JOIN VALUTAZIONI ON STUDENTI.IDstudente = VALUTAZIONI.studenteID WHERE IDstudente = [Codice studente?]
- Quanti studenti per ogni città di provenienza
SELECT Città, Count(*) AS [Numero studenti] FROM STUDENTI GROUP BY Città ORDER BY Città
- Quanti debiti per ogni città di provenienza
SELECT Città, Sum(NumDebiti) AS [Numero debiti] FROM STUDENTI GROUP BY Città ORDER BY Città
- Classifica delle città per numero di studenti
SELECT Città, Count(*) AS [Numero studenti] FROM STUDENTI GROUP BY Città ORDER BY Count(*) DESC
- Quanti studenti per anno di nascita
SELECT Year(DataNascita) AS [Anno di nascita], Count(*) AS [Numero studenti] FROM STUDENTI GROUP BY Year(DataNascita) ORDER BY Year(DataNascita)
- Voto medio per le diverse tipologie di prova
SELECT Tipo AS [Tipologia], Avg(Voto) AS [Voto medio] FROM VALUTAZIONI GROUP BY Tipo
- La situazione degli studenti
SELECT IDstudente AS [Matricola], Cognome, Nome, Count(*) AS [Numero valutazioni], Min(Voto) AS [Voto minimo], Avg(Voto) AS [Voto medio] , Max(Voto) AS [Voto massimo] FROM STUDENTI INNER JOIN VALUTAZIONI ON STUDENTI.IDstudente = VALUTAZIONI.studenteID GROUP BY IDstudente, Cognome, Nome; ORDER BY Cognome, Nome
- Quante prove scritte ha fatto ogni studente
SELECT IDstudente, Cognome, Nome, Count(*) AS [Numero scritti] FROM (STUDENTI INNER JOIN VALUTAZIONI ON STUDENTI.IDstudente = VALUTAZIONI.studenteID) INNER JOIN PROVA ON VALUTAZIONI.provaID = PROVE.IDprova WHERE Tipo = "scritto" GROUP BY IDstudente, Cognome, Nome ORDER BY Cognome, Nome
- Gli studenti con almeno due voti superiori all'otto conseguiti nell'anno corrente
SELECT IDstudente, Cognome, Nome FROM STUDENTI INNER JOIN VALUTAZIONI WHERE (VALUTAZIONI.Voto > 8) AND (VALUTAZIONI.DATA = Year(Now())) GROUP BY IDstudente, Cognome, Nome HAVING Count(*) >= 2 ORDER BY Cognome, Nome