Dipartimenti Progetti - DQL.SQL
Dipartimenti Progetti - DQL.SQL
-- 8. Trovare i nomi dei progetti con bilancio maggiore di 100 e i cognomi degli
impiegati che lavorano su di essi.
SELECT progetto.Nome, impiegato.Cognome
FROM progetto
JOIN impiegato ON progetto.Responsabile = impiegato.Matricola
WHERE progetto.Bilancio > 100;
-- 9. Trovare cognome degli impiegati che guadagnano più del loro direttore di
dipartimento.
SELECT i.Cognome
FROM impiegato i
JOIN dipartimento d ON i.Dipartimento = d.Codice
WHERE i.Stipendio > (SELECT Stipendio FROM impiegato WHERE Matricola =
d.Direttore);
-- 11. Trovare i nomi dei dipartimenti in cui lavorano impiegati che guadagnano più
di 60.
SELECT d.Nome
FROM dipartimento d
JOIN impiegato i ON d.Codice = i.Dipartimento
WHERE i.Stipendio > 60;
-- 12. Trovare i nomi dei dipartimenti in cui tutti gli impiegati guadagnano più di
60.
SELECT d.Nome
FROM dipartimento d
WHERE NOT EXISTS (
SELECT *
FROM impiegato i
WHERE i.Dipartimento = d.Codice AND i.Stipendio <= 60
);
-- 13. Trovare il cognome degli impiegati di stipendio massimo.
SELECT Cognome
FROM impiegato
WHERE Stipendio = (SELECT MAX(Stipendio) FROM impiegato);
-- 14. Trovare matricola e cognome degli impiegati che non lavorano a nessun
progetto.
SELECT i.Matricola, i.Cognome
FROM impiegato i
LEFT JOIN partecipazione p ON i.Matricola = p.Impiegato
WHERE p.Impiegato IS NULL;
-- 16. Trovare matricola e cognome degli impiegati che lavorano a un solo progetto.
SELECT i.Matricola, i.Cognome
FROM impiegato i
JOIN (
SELECT Impiegato
FROM partecipazione
GROUP BY Impiegato
HAVING COUNT(Progetto) = 1
) p ON i.Matricola = p.Impiegato;
-- 17. Trovare per ciascun dipartimento lo stipendio medio degli impiegati che vi
lavorano.
SELECT d.Nome AS Dipartimento, AVG(i.Stipendio) AS StipendioMedio
FROM dipartimento d
JOIN impiegato i ON d.Codice = i.Dipartimento
GROUP BY d.Nome;
-- 18. Trovare matricola e cognome degli impiegati che hanno lo stipendio superiore
almeno del 10% rispetto allo stipendio medio del loro dipartimento.
SELECT i.Matricola, i.Cognome
FROM impiegato i
JOIN dipartimento d ON i.Dipartimento = d.Codice
WHERE i.Stipendio > 1.1 * (SELECT AVG(Stipendio) FROM impiegato WHERE Dipartimento
= d.Codice);
-- 19. Trovare cognome degli impiegati che guadagnano meno del minimo che guadagna
un direttore di dipartimento.
SELECT i.Cognome
FROM impiegato i
JOIN dipartimento d ON i.Dipartimento = d.Codice
WHERE i.Stipendio < (SELECT MIN(Stipendio) FROM impiegato WHERE Dipartimento =
d.Codice AND Matricola = d.Direttore);