----------------------------- Q01 --------------------------------- -- qui gagne le plus? SELECT nom, prenom, salaire FROM employe WHERE salaire = (SELECT max(salaire) FROM employe) ; -- meme chose avec limit (s'il y en a un seul, sinon cela ne marche pas) SELECT nom, prenom, salaire FROM employe order BY salaire DESC limit 1; -- qui gagne plus que le chef du departement Research SELECT nom, prenom, salaire from employe where salaire >= (SELECT salaire FROM employe E, departement D WHERE ssn = dir_ssn AND dnom = 'Research') ORDER BY salaire DESC; -- qui dans le departement Research -- gagne plus que le chef du departement Research SELECT nom, prenom, salaire from employe NATURAL JOIN departement where salaire >= (SELECT salaire FROM employe E, departement D WHERE ssn = dir_ssn AND dnom = 'Research') AND dnom='Research' ORDER BY salaire DESC; -- employes qui gagnent moins de 80% de salaire moyen SELECT nom, prenom, salaire, dnom FROM employe NATURAL JOIN departement WHERE salaire <= 0.8 * (SELECT avg(salaire) FROM employe); select current_timestamp; -- tous les employes qui travaillent dans un projet -- ou travaille aussi John Smith SELECT nom, prenom FROM employe NATURAL LEFT JOIN emp_proj WHERE pnumero IN (SELECT pnumero FROM employe NATURAL JOIN emp_proj WHERE lower(nom)='smith' AND lower(prenom)='john'); SELECT DISTINCT nom, prenom FROM employe NATURAL LEFT JOIN emp_proj WHERE pnumero IN (SELECT pnumero FROM employe NATURAL JOIN emp_proj WHERE nom='Smith' AND prenom='John'); -- les employés qui travaillent dans un projet ou John Smith ne travaille pas. SELECT DISTINCT nom, prenom FROM employe NATURAL JOIN emp_proj WHERE pnumero <>ALL (SELECT pnumero FROM employe NATURAL JOIN emp_proj WHERE nom='Smith' AND prenom='John'); -- tous les employes qui ne travaillent pas dans -- le departement Research et qui sont plus ages qu'un employe -- du departement Research. SELECT nom, prenom FROM employe NATURAL JOIN departement WHERE dnom <> 'Research' AND EXTRACT( YEAR FROM CURRENT_DATE ) - EXTRACT( YEAR FROM date_naiss ) >ANY (SELECT EXTRACT( YEAR FROM CURRENT_DATE ) - EXTRACT( YEAR FROM date_naiss ) FROM employe NATURAL JOIN departement WHERE dnom='Research'); -- tous les employes qui gagnent plus que le salaire moyen des chefs de -- departement SELECT nom, prenom from employe where salaire > (select avg(salaire) from employe where ssn in ( select ssn from employe E, departement D where E.ssn = D.dir_ssn ) );