Pour vous entrainer, voici quelques questions qui vous permettront d'élaborer des requêtes et mener vers la réponse :
J'espère que vous avez réussi à en faire le maximum seul ! voici la correction :
- Afficher la profession de l'employé 547.
Requête SQL 1
SELECT service FROM employes WHERE id_employes=547;
Explications : Nous utilisons une condition WHERE sur le champ id (demande de départ) pour cibler uniquement un employé en particulier.
- Afficher la date d'embauche de : Amandine.
Requête SQL 2
SELECT date_embauche FROM employes WHERE prenom='amandine';
Explications : Nous utilisons une condition WHERE sur le champ prenom (demande de départ) pour cibler uniquement un employé en particulier.
- Afficher le nombre de commerciaux.
Requête SQL 3
SELECT COUNT(*) as 'nombre' FROM employes WHERE service='commercial';
Explications : Nous utilisons COUNT pour compter le nombre de commerciaux, nous ne souhaitons pas savoir qui ils sont.
- Afficher le coût des commerciaux sur 1 année.
Requête SQL 4
SELECT SUM(salaire*12) FROM employes WHERE service='commercial';
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).
- Afficher le salaire moyen par service.
Requête SQL 5
SELECT service, round(AVG( salaire )) FROM employes GROUP BY service;
service | round(AVG( salaire )) |
---|
assistant | 1775 |
commercial | 2558 |
communication | 1500 |
comptabilite | 1900 |
direction | 4750 |
informatique | 1983 |
juridique | 3200 |
production | 2225 |
secretariat | 1497 |
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.
- Afficher le nombre de recrutements sur l'année 2010.
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';
Explications : Plusieurs méthodes permettent de consulter des enregistrements entre deux dates précises : BETWEEN, LIKE, Opérateur de comparaison, etc.
- Augmenter le salaire pour chaque employé de 100€.
Requête SQL 7
UPDATE employes SET salaire=salaire+100;
Query OK, 1 row affected.
- Afficher le nombre de services (différents).
Requête SQL 8
SELECT COUNT(DISTINCT service) FROM employes;
Explications : Nous utilisons une condition WHERE sur le champ prenom (demande de départ) pour cibler uniquement un employé en particulier.
- Afficher les informations de l'employé du service commercial gagnant le salaire le plus élevé
Requête SQL 9
SELECT prenom, salaire FROM employes WHERE service='commercial' AND salaire = ( SELECT MAX( salaire ) FROM employes WHERE service='commercial' );
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.
- Afficher l'employé ayant été embauché en dernier.
Requête SQL 10
SELECT * FROM employes WHERE date_embauche = (SELECT max(date_embauche) FROM employes);
id_employes | prenom | nom | sexe | service | date_embauche | salaire |
---|
990 | Stephanie | Lafaye | f | assistant | 2015-06-02 | 1775 |
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.