Exercice Requete

Vous êtes ici : >> SQL / Requête de SELECTion
Temps d'étude : 45 min. Niveau : Moyen.
Tags : Base de données, cours sql, Requête de SELECTion
Fichier(s) utile(s) pour ce cours : employes.sql

Exercice : Requête de SELECTion

Pour vous entrainer, voici quelques questions qui vous permettront d'élaborer des requêtes et mener vers la réponse :
  1. Afficher la profession de l'employé 547.
  2. Afficher la date d'embauche de : Amandine.
  3. Afficher le nombre de commerciaux.
  4. Afficher le coût des commerciaux sur 1 année.
  5. Afficher le salaire moyen par service.
  6. Afficher le nombre de recrutements sur l'année 2010.
  7. Augmenter le salaire pour chaque employé de 100€.
  8. Afficher le nombre de services (différents).
  9. Afficher les informations de l'employé du service commercial gagnant le salaire le plus élevé
  10. Afficher l'employé ayant été embauché en dernier.

Correction : Requête de SELECTion

J'espère que vous avez réussi à en faire le maximum seul ! voici la correction :
  1. Afficher la profession de l'employé 547.
  2. Requête SQL 1
    SELECT service FROM employes WHERE id_employes=547;

    résultat 1
    service
    commercial

    Explications : Nous utilisons une condition WHERE sur le champ id (demande de départ) pour cibler uniquement un employé en particulier.


  3. Afficher la date d'embauche de : Amandine.
  4. Requête SQL 2
    SELECT date_embauche FROM employes WHERE prenom='amandine';

    résultat 2
    date_embauche
    2010-01-23

    Explications : Nous utilisons une condition WHERE sur le champ prenom (demande de départ) pour cibler uniquement un employé en particulier.


  5. Afficher le nombre de commerciaux.
  6. Requête SQL 3
    SELECT COUNT(*) as 'nombre' FROM employes WHERE service='commercial';

    résultat 3
    nombre
    6

    Explications : Nous utilisons COUNT pour compter le nombre de commerciaux, nous ne souhaitons pas savoir qui ils sont.


  7. Afficher le coût des commerciaux sur 1 année.
  8. Requête SQL 4
    SELECT SUM(salaire*12) FROM employes WHERE service='commercial';

    résultat 4
    SUM(salaire*12)
    184200

    Explications : Nous utilisons SUM pour faire la somme de la colonne salaire (que nous multiplions par 12) à condition que les employés fassent partie du service commercial (demande de départ).


  9. Afficher le salaire moyen par service.
  10. Requête SQL 5
    SELECT service, round(AVG( salaire )) FROM employes GROUP BY service;

    résultat 5
    serviceround(AVG( salaire ))
    assistant1775
    commercial2558
    communication1500
    comptabilite1900
    direction4750
    informatique1983
    juridique3200
    production2225
    secretariat1497

    Explications : Nous utilisons une AVG pour calculer la moyenne des salaire et ROUND pour arrondir cette moyenne. Group By permet d'effectuer un regroupement, indispensable dans notre cas.


  11. Afficher le nombre de recrutements sur l'année 2010.
  12. Requête SQL 6
    				SELECT COUNT(*) as 'nb de recrutement' FROM employes WHERE date_embauche BETWEEN '2010-01-01' AND '2010-12-31';
    				SELECT COUNT(*) as 'nb de recrutement' FROM employes WHERE date_embauche LIKE '2010%';
    				SELECT COUNT(*) as 'nb de recrutement' FROM employes WHERE date_embauche >= '2010-01-01' AND date_embauche <= '2010-12-31';

    résultat 6
    nb de recrutement
    2

    Explications : Plusieurs méthodes permettent de consulter des enregistrements entre deux dates précises : BETWEEN, LIKE, Opérateur de comparaison, etc.


  13. Augmenter le salaire pour chaque employé de 100€.
  14. Requête SQL 7
    UPDATE employes SET salaire=salaire+100;

    résultat 7Query OK, 1 row affected.



  15. Afficher le nombre de services (différents).
  16. Requête SQL 8
    SELECT COUNT(DISTINCT service) FROM employes;

    résultat 8
    COUNT(DISTINCT service)
    9

    Explications : Nous utilisons une condition WHERE sur le champ prenom (demande de départ) pour cibler uniquement un employé en particulier.


  17. Afficher les informations de l'employé du service commercial gagnant le salaire le plus élevé
  18. Requête SQL 9
    SELECT prenom, salaire FROM employes WHERE service='commercial' AND salaire = ( SELECT MAX( salaire ) FROM employes WHERE service='commercial' );

    résultat 9
    prenomsalaire
    Thomas3550

    Explications : Nous passerons par une requête imbriquée pour connaitre le salaire maximum gagné par un employé du service commercial. Une fois ce salaire connu, nous l'utiliserons pour savoir qui le gagne dans la liste des employés. La sous-requête (entre parenthese) est exécutée avant. Le système interprète d'abord la requête entre parenthèse avant de s'en servir pour le reste de la requête.


  19. Afficher l'employé ayant été embauché en dernier.
  20. Requête SQL 10
    SELECT * FROM employes WHERE date_embauche = (SELECT max(date_embauche) FROM employes);

    résultat 10
    id_employesprenomnomsexeservicedate_embauchesalaire
    990StephanieLafayefassistant2015-06-021775

    Explications : Même principe que la requête précédente, avec la requête imbriquée, nous isolons la date d'embauche la plus grande et regardons ensuite qui a été recruté à cette date.