Clausola From
Trova gli studenti iscritti a inf con cognome Rossi
Select * From stud Where C='Rossi' and CdL='Inf';
Trova gli studenti iscritti a inf con numero di crediti e media esami
Select avg(V), N_C From (Select * from stud where CdL='Inf') S1 join Esup on S1.mat=Ecmat Group by S1.mat, N_C;
Clausola Where
Trova tutti gli studenti che sono nati lo stesso giorno di mat='123'
Select * From stud Where DN=(Select DN From stud Where mat='123');
Trova tutti gli studenti che sono nati lo stesso giorno di mat='123' e della stessa provincia di mat='12X'
Select * From stud Where DN=(Select DN From stud Where mat='123') And PR=(Select PR From stud Where mat='124');
Clausola From
Trova gli studenti iscritti in INF con cognome Rossi
Select * From stud Where C='Rossi' and Col='inf';
Select * From (Select * from stud where Col='inf') Where C='Rossi';
Trova gli studenti iscritti in INF, numero di crediti e media esami
Select AVG(V), N_C From (Select * from stud where Col='inf') S1 Join Esup On S1.Mat=EsC.Mat Group by S1.Mat, N_C;
Clausola WHERE
Trova tutti gli studenti che sono nati lo stesso giorno di mat='123'
Select * From stud Where DN=(Select DN From stud Where Mat='123');
Trova tutti gli studenti che sono nati lo stesso giorno di mat='123' e della stessa provincia di mat='124'
Select * From stud Where DN=(Select DN From stud Where Mat='123') and PR=(Select PR From stud Where Mat='124');
CLAUSOLA HAVING
Quanti studenti ci sono nella stessa provincia di MAT='123'
SELECT COUNT * FROM STUD GROUP BY PR HAVING PR = (SELECT PR FROM STUD WHERE MAT='123');
Esercizio
Per ogni studente che ha fatto più di 2 esami, mostra il suo voto max
SELECT MAX(VOTO) FROM STUD JOIN ESUP ON MAT=C.MAT GROUP BY MAT HAVING COUNT(*) > 2;
Per ogni studente che ha fatto più di 2 esami (mostra nome e cognome) e che ha un voto max maggiore del voto max di Matteo Rossi
SELECT N,C FROM STUD JOIN ESUP ON MAT=C.MAT GROUP BY MAT,N,C HAVING COUNT(*) > 2 AND MAX(V) > (SELECT MAX(V) FROM ESUP WHERE MAT='123');
Valori mancanti
Se ho una somma x1+x2+x3+x4, con alcuni valori NULL, il risultato è un NULL. Basta un solo valore sconosciuto. In SQL ci sono alcune funzioni come: SUM, AVG, MAX, MIN, COUNT. In queste operazioni il database esclude i valori NULL perché ha difficoltà a gestirli.
SELECT AVG(V) FROM E.SUP WHERE MAT='123';
SELECT SUM(V)/COUNT(*) FROM ESUP WHERE MAT='123';
Lezione di laboratorio 12.05.2022
Trovare gli impiegati che hanno più di 2 familiari a carico e che lavorano per il reparto "Logistica"
SELECT M.C.F., Max(ID.Nome), COUNT(CF) AS Numero_Familiar, Max(ID.NumeroRepartimento) FROM (Impiegato l JOIN Familiari e_corso FC ON l.CF= FC.cf_impiegato) JOIN Dipartimento D ON D.numero_dipartimento = ID.numero_repartimento GROUP BY M.C.F, ID.Nome_dipartimento HAVING COUNT(*) > 2 AND Nome_dipartimento = 'Logistica';
Trovare m,c del supervisore che supervisiona il max numero di impiegati
SELECT Sup.CF, MAX(Sup.nome), MAX(Sup.cognome) FROM Impiegato IS JOIN Impiegato Sup ON IS_CF_supervisore = Sup_cf GROUP BY Sup.cf;
Lezione 18/05/2022
Nested Query (riepilogo lez. precedente)
Media voti studenti raggruppati per pronuncia
SELECT AVG(v), PR FROM STUD JOIN ESUP ON MAT= CARD GROUP BY P_I;
può essere considerata come tabella e quindi essere innestata in una clausola (from, where, having) di un'altra query. Fino a che livello di profondità possiamo arrivare? È possibile creare un vero albero di query.
Trovare gli studenti che hanno lo stesso cognome dello studente che ha preso voto max a BD
Select * From Stud Where (Select Cognome From Stud s Where Ne = 'BD' and V = (Select Max(u) From Esame Where Ne = 'BD'));
Se nelle where ci fossero stati un insieme di valori, si sarebbe dovuti in un errore perché non è possibile confrontare una sola tupla letta con un insieme dei valori. Esistono perciò alcuni comandi come: IN — Il valore è nella {…}, implicito confronto di uguaglianza: Where Cognome IN {…, …, …} ANY — Connettivo anche confronti in disuguaglianza ALL — Non è possibile la scrittura Cognome = ALL {…, …}.
-
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 1)…
-
Riassunto esame Basi di dati, Prof. Maratea Antonio, libro consigliato Fondamenti di Basi di Dati (Appunti Parte 2)…
-
Riassunto esame Basi di dati, Prof. Persia, libro consigliato Sistemi di basi di dati e applicazioni, Angelo Chiane…
-
Riassunto esame Algoritmi e strutture dati, Prof. Cabodi Giampiero, libro consigliato Appunti di Algoritmi e strutt…