1. Basi di Dati
Basi di Dati
Esercizi di interrogazioni complesse (I parte)
2. DB Esami
DB Esami
S (Matr, SNome, Citta, ACorso)
C (CC, CNome, CD)
FK: CD REFERENCES D S
D (CD, CNome, Citta)
D (CD CN Citt ) Matr SNome Citta Acorso
E (Matr, CC, Data, Voto) E
FK: Matr REFERENCES S
FK Matr REFERENCES S Matr
M t CC D t V t
Data Voto
FK: CC REFERENCES C C
CC CN
CNome CD
D
CD CNome Citta
2 Esercizi di interrogazioni complesse (I parte)
4. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Numero di studenti che hanno sostenuto almeno un esame
SELECT COUNT(DISTINCT Matr)
FROM E
4 Esercizi di interrogazioni complesse (I parte)
5. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Voto medio degli esami sostenuti dalla matricola 123
SELECT AVG(Voto)
FROM E WHERE Matr='123'
SELECT SUM(Voto)/COUNT(Voto)
SELECT SUM(V )/COUNT(V )
FROM E WHERE Matr='123'
5 Esercizi di interrogazioni complesse (I parte)
6. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Voto massimo e minimo ottenuto per ogni studente,
escludendo il corso C323
l d d il C323
SELECT Matr,MAX(Voto),MIN(Voto)
SELECT M t MAX(V t ) MIN(V t )
FROM E
WHERE CC <> C323
WHERE CC <> ‘C323'
GROUP BY Matr
6 Esercizi di interrogazioni complesse (I parte)
7. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Voto massimo e minimo ottenuto per ogni studente,
visualizzando anche il nome dello studente
i li d h il d ll d
SELECT E.Matr, S.SNome, MAX(Voto),MIN(Voto)
SELECT E M t S SN MAX(V t ) MIN(V t )
FROM E, S
WHERE S.MATR = E.MATR
WHERE S MATR = E MATR
GROUP BY E.Matr, S.Snome
7 Esercizi di interrogazioni complesse (I parte)
8. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Codice e nome di un corso, e relativo numero di esami
sostenuti
i
SELECT C.CC,C.CNome,COUNT(*)
SELECT C CC C CN COUNT(*)
FROM E,C
WHERE E.CC=C.CC
WHERE E CC=C CC
GROUP BY C.CC,C.CNome
8 Esercizi di interrogazioni complesse (I parte)
9. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Numero di esami per ogni voto compreso tra 22 e 28
SELECT Voto, COUNT(*)
FROM E
GROUP BY Voto
HAVING Voto BETWEEN 22 AND 28
HAVING V BETWEEN 22 AND 28
SELECT Voto, COUNT(*)
SELECT V t COUNT(*)
FROM E
WHERE Voto BETWEEN 22 AND 28
WHERE Voto BETWEEN 22 AND 28
GROUP BY Voto
9 Esercizi di interrogazioni complesse (I parte)
10. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Media dei voti per ogni esame sostenuto da più di due
studenti
d i
SELECT CC,AVG(Voto)
SELECT CC AVG(V t )
FROM E
GROUP BY CC
GROUP BY CC
HAVING COUNT(*) > 2
10 Esercizi di interrogazioni complesse (I parte)
11. DB Esami – Aggregazione e raggruppamento
DB Esami Aggregazione e raggruppamento
Matricola degli studenti che hanno sostenuto almeno due
esami con lo stesso voto
i l
SELECT Matr
SELECT M t
FROM E
GROUP BY Matr,Voto
GROUP BY MatrVoto
HAVING COUNT(CC) >= 2
11 Esercizi di interrogazioni complesse (I parte)
12. DB Mobili
DB Mobili
Articoli (Art_Cod, Cat_Cod, Art_Descrizione, Art_Prezzo, Art_IVA,
Art_Spese_Trasporto)
p p )
FK: Cat_Cod REFERENCES Categorie
Categorie (Cat_Cod, Cat_Descrizione)
Componenti (Com_Cod, Com_Descrizione, Com_Costo, Lab_Cod)
Componenti (Com Cod, Com Descrizione, Com Costo, Lab Cod)
FK: Lab_Cod REFERENCES Laboratori
Laboratori (Lab_Cod, Lab_Indirizzo, Lab_Citta, Lab_Telefono)
Ordini (Ord_Cod, Neg_Cod, Ord_Data)
Ordini (Ord Cod Neg Cod Ord Data)
FK: Neg_Cod REFERENCES Negozi
Negozi (Neg_Cod, Neg_Nome, Neg_Indirizzo, Neg_Citta, Neg_Telefono)
CompArt (Art Cod Com Cod CompArt Qta)
(Art_Cod, Com_Cod, CompArt_Qta)
FK: Art_Cod REFERENCES Articoli
FK: Com_Cod REFERENCES Componenti
OrdArt (Ord Cod Art Cod OrdArt Qta)
(Ord_Cod, Art_Cod, OrdArt_Qta)
FK: Ord_Cod REFERENCES Ordini
FK: Art_Cod REFERENCES Articoli
12 Esercizi di interrogazioni complesse (I parte)
14. DB Mobili – Aggregazione e raggruppamento
DB Mobili Aggregazione e raggruppamento
La minima e la massima quantità di articoli richiesti in un
ordine
di
SELECT MIN(OrdArt_Qta) , MAX(OrdArt_Qta)
SELECT MIN(O dA t Qt ) MAX(O dA t Qt )
FROM OrdArt
14 Esercizi di interrogazioni complesse (I parte)
15. DB Mobili – Aggregazione e raggruppamento
DB Mobili Aggregazione e raggruppamento
La media dei prezzi dei componenti non prodotti in alcun
laboratorio
l b i
SELECT AVG(Com_Costo)
SELECT AVG(C C t )
FROM Componenti
WHERE Lab_Cod IS NULL
WHERE Lab Cod IS NULL
15 Esercizi di interrogazioni complesse (I parte)
16. DB Mobili – Aggregazione e raggruppamento
DB Mobili Aggregazione e raggruppamento
Il prezzo più alto per ciascuna categoria
SELECT Cat_Cod, MAX(Art_Prezzo)
FROM Articoli
GROUP BY Cat_Cod
16 Esercizi di interrogazioni complesse (I parte)
17. DB Mobili – Aggregazione e raggruppamento
DB Mobili Aggregazione e raggruppamento
Quanti laboratori sono presenti in ciascuna città, escludendo le
città con un solo laboratorio
i à l l b i
SELECT Lab_Citta, COUNT(Lab_Citta)
SELECT L b Citt COUNT(L b Citt )
FROM Laboratori
GROUP BY Lab_Citta
GROUP BY Lab Citta
HAVING COUNT(Lab_Citta) > 1
17 Esercizi di interrogazioni complesse (I parte)
18. DB Mobili – Aggregazione e raggruppamento
DB Mobili Aggregazione e raggruppamento
Da quanti componenti è composto ciascun articolo,
considerando solo gli articoli composti da almeno 10
id d l li i li id l 10
componenti
SELECT Art_Cod, SUM(CompArt_Qta)
FROM CompArt
FROM CompArt
GROUP BY Art_Cod
HAVING SUM(CompArt_Qta) > 10
HAVING SUM(CompArt Qta) >= 10
18 Esercizi di interrogazioni complesse (I parte)