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
123SELECT DISTINCT CittàFROM STUDENTIORDER BY Città - Gli studenti che non hanno ancora comunicato la data di nascita
123SELECT *FROM STUDENTIWHERE DataNascita IS NULL - Gli studenti di Feltre che hanno un cognome simile a “rosa”
123SELECT *FROM STUDENTIWHERE (Citta = "Feltre") AND (Cognome LIKE "*rosa*") - Gli studenti con il cognome e nome uguale a qualche altro studente
123SELECT S1.*FROM STUDENTI AS S1, STUDENTI AS S2WHERE (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
123SELECT S1.*, S2.*FROM STUDENTI AS S1, STUDENTI AS S2WHERE (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
123SELECT DISTINCT IDstudente, Cognome, NomeFROM STUDENTI INNER JOIN VALUTAZIONIWHERE (VALUTAZIONI.Voto > 8) AND (VALUTAZIONI.DATA = Year(Now())) - Quanti studenti
12SELECT Count(*) AS [Numero studenti]FROM STUDENTI
Quanti debiti
12SELECT Sum(NumDebiti) AS [Numero debiti]FROM STUDENTI - Quanti studenti di una certa città
123SELECT Count(*) AS [Numero studenti]FROM STUDENTIWHERE Città = [Quale città?] - Quanti debiti degli studenti di Feltre, Pedavena e Alano
123SELECT Sum(NumDebiti) AS [Numero di debiti]FROM STUDENTIWHERE Città IN ("Alano", "Feltre", "Pedavena") - Quanti studenti con un certo anno di nascita
123SELECT Count(*) AS [Numero studenti]FROM STUDENTIWHERE Year(DataNascita) = [Anno di nascita?] - La situazione di un certo studente
1234SELECT 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.studenteIDWHERE IDstudente = [Codice studente?] - Quanti studenti per ogni città di provenienza
1234SELECT Città, Count(*) AS [Numero studenti]FROM STUDENTIGROUP BY CittàORDER BY Città - Quanti debiti per ogni città di provenienza
1234SELECT Città, Sum(NumDebiti) AS [Numero debiti]FROM STUDENTIGROUP BY CittàORDER BY Città - Classifica delle città per numero di studenti
1234SELECT Città, Count(*) AS [Numero studenti]FROM STUDENTIGROUP BY CittàORDER BY Count(*) DESC - Quanti studenti per anno di nascita
1234SELECT Year(DataNascita) AS [Anno di nascita], Count(*) AS [Numero studenti]FROM STUDENTIGROUP BY Year(DataNascita)ORDER BY Year(DataNascita) - Voto medio per le diverse tipologie di prova
123SELECT Tipo AS [Tipologia], Avg(Voto) AS [Voto medio]FROM VALUTAZIONIGROUP BY Tipo - La situazione degli studenti
123456SELECT 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.studenteIDGROUP BY IDstudente, Cognome, Nome;ORDER BY Cognome, Nome - Quante prove scritte ha fatto ogni studente
123456SELECT IDstudente, Cognome, Nome, Count(*) AS [Numero scritti]FROM (STUDENTI INNER JOIN VALUTAZIONI ON STUDENTI.IDstudente = VALUTAZIONI.studenteID)INNER JOIN PROVA ON VALUTAZIONI.provaID = PROVE.IDprovaWHERE Tipo = "scritto"GROUP BY IDstudente, Cognome, NomeORDER BY Cognome, Nome - Gli studenti con almeno due voti superiori all’otto conseguiti nell’anno corrente
123456SELECT IDstudente, Cognome, NomeFROM STUDENTI INNER JOIN VALUTAZIONIWHERE (VALUTAZIONI.Voto > 8) AND (VALUTAZIONI.DATA = Year(Now()))GROUP BY IDstudente, Cognome, NomeHAVING Count(*) >= 2ORDER BY Cognome, Nome