Vous êtes sur la page 1sur 3

République Tunisienne

Université de Monastir
Institut Supérieur d’Informatique de Mahdia

Module Base de données


TD 5 : Interrogation des données sous SQL
Exercice :
Vente (No_vente, Quantite_vendu, Nom_article#, Nom_departement#)
Article (Nom_article, Type_article, Couleur_article)
Livraison (No_livraison, Quantite_livree, Nom_article# Nom_departement#, No_fournisseur#)
Fournisseur (No_fournisseur, Nom_fournisseur)
Departement (Nom_departement, Numero_etage, Numero_telephone, No_directeur#)
Employe (No_employe, Nom, Salaire, Nom_departement#, No_superviseur#)
1) Sélectionnez les champs noms, types et couleurs des articles lorsque la couleur est
soit « Green » soit « Brown ». Triez les résultats selon l’ordre alphabétique des
noms des articles.
SELECT Nom_article, Type_article, Couleur_article
FROM Article
WHERE Couleur_article = ‘Green’ OR Couleur_article = ‘Brown’
ORDER BY Nom_article ASC;

SELECT *
FROM Article
WHERE Couleur_article IN (‘Green’, ‘Brown’)
ORDER BY Nom_article;

2) Trouvez les numéros et noms des employés du département de « Marketing ». Les


lignes affichées doivent être triées dans l’ordre croissant des noms.
SELECT No_employe, Nom
FROM Employe
WHERE Nom_departement = ‘Marketing’
ORDER BY Nom;

3) Sélectionner les numéros des employés, Nom, Salaire et Nom département des
employés des départements « Management » et « Accounting ». Utilisez
l’opérateur logique « IN ».
SELECT No_employe, Nom, Salaire, Nom_departement
FROM Employe
WHERE Nom_departement IN (‘Management’, ‘Accounting’);

4) Donnez les articles qui ne sont pas vendus dans le second étage.
SELECT V.Nom_artice
FROM Vente V, Departement D
WHERE V.Nom_departement = D.Nom_departement AND D.Numero_etage != 2;
1
République Tunisienne
Université de Monastir
Institut Supérieur d’Informatique de Mahdia

5) Trouvez les numéros et les noms des fournisseurs qui délivrent des compas
(‘Compass’). Utilisez DISTINCT pour avoir une liste exhaustive des fournisseurs.
SELECT DISTINCT F.No_fournisseur, F.Nom_fournisseur
FROM Fournisseur F, Livraison L
WHERE F.No_fournisseur = L.No_fournisseur AND L.Nom_article = ‘Compass’;

6) Trouvez le salaire moyen de chaque département qui se trouve au second étage. Utilisez
GROUP BY afin de regrouper les salaires par Nom_Departement.
SELECT D.Nom_departement, AVG(E.salaire) AS ‘Salaire moyenne’
FROM Employe E, Departement D
WHERE E.Nom_departement = D.Nom_departement AND D.Numero_etage = 2
GROUP BY D.Nom_departement;

7) Donnez les articles vendus par au moins deux départements. Utilisez GROUP BY pour
regrouper les résultats selon Nom_article et utiliser HAVING pour filtrer les résultats
en utilisant la fonction COUNT.
SELECT V.Nom_article
FROM Vente V
GROUP BY V.Nom_article
HAVING COUNT(DISTINCT V.Nom_departement) > 1;

8) Pour chaque superviseur, donnez son numéro, son nom et le nombre d’employés qui
dépendent directement de lui. N’oubliez pas d’utiliser GROUP BY sur numéro de
superviseur et nom superviseur.
SELECT Sup.No_employe, Sup.Nom, COUNT(Emp.No_employe)
FROM Employe Sup, Employe Emp
WHERE Emp.No_superviseur = Sup.No_employe
GROUP BY Sup.No_employe;

9) Pour chaque département, trouvez les employés qui ont un salaire supérieur ou égal au
salaire moyen de leur département. Utilisez une sous-requête pour avoir le salaire moyen
du département de chaque employé.
SELECT Emp.Nom
FROM Employe Emp
WHERE Emp.Salaire > (SELECT AVG (E.Salaire)
FROM Employe E
WHERE Emp.Nom_departement = E. Nom_departement
GROUP BY Emp.Nom_departement);

2
République Tunisienne
Université de Monastir
Institut Supérieur d’Informatique de Mahdia

10) Donnez la liste des fournisseurs qui livrent à tous les départements. utilisez GROUP BY
pour grouper les résultats selon le No_fournisseur et utilisez aussi HAVING pour filtrer
en utilisant la fonction COUNT.
SELECT F.Nom_fournisseur
FROM Fournisseur F, Livraison L
WHERE F.No_fournisseur= L.No_forunisseur
GROUP BY F.Nom_fournisseur
HAVING COUNT(DISTINCT Nom_departement) = SELECT COUNT(*) FROM
Departement;

Vous aimerez peut-être aussi