REM===================== INTERROGAZIONI CON FUNZIONI AGGREGATE ===== REM========================== ED OPERATORI DI AGGREGAZIONE ========= REM REM----------------------------------------------------------------- REM Chi sono i Mario? REM----------------------------------------------------------------- SELECT Nome, Cognome FROM Impiegato WHERE Impiegato.Nome = 'Mario'; REM----------------------------------------------------------------- REM Quanti Mario ci sono? REM----------------------------------------------------------------- SELECT COUNT(*) FROM Impiegato WHERE Nome='Mario'; REM----------------------------------------------------------------- REM Stipendio degli impiegati di nome 'Mario'? REM----------------------------------------------------------------- SELECT Stipendio FROM Impiegato WHERE Impiegato.Nome = 'Mario'; REM----------------------------------------------------------------- REM Quante fasce di stipendio ci sono per REM coloro che si chiamano Mario? REM----------------------------------------------------------------- SELECT COUNT(DISTINCT Stipendio) FROM Impiegato WHERE Nome='Mario'; REM----------------------------------------------------------------- REM Conteggio degli elementi di un multinsieme. REM----------------------------------------------------------------- SELECT COUNT(ALL Stipendio) FROM Impiegato WHERE Nome='Mario'; REM ------ Equivalente alla precedente. SELECT COUNT(Stipendio) FROM Impiegato WHERE Nome='Mario'; REM----------------------------------------------------------------- REM Somma degli stipendi dei Mario REM----------------------------------------------------------------- SELECT SUM(Stipendio) FROM Impiegato WHERE Nome='Mario'; REM----------------------------------------------------------------- REM Stipendio minimo, medio e massimo dei Mario REM----------------------------------------------------------------- SELECT MIN(Stipendio) AS Minimo, AVG(Stipendio) AS Medio, MAX(Stipendio) AS Massimo FROM Impiegato WHERE Nome='Mario'; REM----------------------------------------------------------------- REM Somma degli stipendi degli impiegati dello stesso dipartimento, REM indipendentemente dalla sede? REM----------------------------------------------------------------- REM ------ I approssimazione. SELECT DipNome, Stipendio FROM Impiegato; REM ------ II approssimazione. SELECT DipNome, Stipendio FROM Impiegato ORDER BY DipNome; REM ------ Soluzione. SELECT DipNome, SUM(Stipendio) FROM Impiegato GROUP BY DipNome; REM----------------------------------------------------------------- REM Numero di impiegati per dipartimento in ogni sede REM----------------------------------------------------------------- REM ------ I approssimazione. SELECT DipSede, DipNome FROM Impiegato; REM ------ II approssimazione. SELECT DipSede, DipNome FROM Impiegato ORDER BY DipSede, DipNome; REM ------ Soluzione. SELECT DipSede, DipNome, Count(*) FROM Impiegato GROUP BY DipSede, DipNome; REM----------------------------------------------------------------- REM Dipartimenti che spendono pił di 200 milioni in stipendi REM----------------------------------------------------------------- REM ------ I approssimazione. SELECT DipNome, Stipendio FROM Impiegato ; REM ------ II approssimazione. SELECT DipNome, Stipendio FROM Impiegato ORDER BY DipNome ; REM ------ Soluzione. SELECT DipNome, SUM(Stipendio) FROM Impiegato GROUP BY DipNome HAVING SUM(Stipendio) > 200; REM======================INTERROGAZIONI ANNIDATE=================== REM REM----------------------------------------------------------------- REM Matricole degli impieagati che lavorano a piu` di due progetti. REM----------------------------------------------------------------- SELECT Impiegato FROM Partecipazione GROUP BY Impiegato HAVING COUNT(*) > 2; REM----------------------------------------------------------------- REM Cognomi degli impieagati che lavorano a piu` di due progetti. REM----------------------------------------------------------------- SELECT I.Cognome FROM Impiegato I, Partecipazione P WHERE P.Impiegato = I.Matricola GROUP BY I.Cognome HAVING COUNT(*) > 2; REM ------ Equivalente SELECT I.Cognome FROM Impiegato I WHERE (SELECT Count(*) FROM Partecipazione P WHERE P.Impiegato = I.Matricola) > 2; REM ------ COME FUNZIONA? SELECT Matricola FROM Impiegato; SELECT * FROM Partecipazione; SELECT Count(*) FROM Partecipazione P WHERE P.Impiegato = '101'; SELECT Count(*) FROM Partecipazione P WHERE P.Impiegato = '103'; SELECT Count(*) FROM Partecipazione P WHERE P.Impiegato = '375'; REM .................... SELECT Count(*) FROM Partecipazione P WHERE P.Impiegato = '030'; SELECT I.Cognome FROM Impiegato I WHERE I.Matricola = '030';