Questions techniques sur MYSQL – Partie 5

Dans cet article vous trouverez la suite de la quatrième partie, consultez nos questions d’entretien d’embauche sur des requêtes MYSQL simple, avancée et enfin complexe. Ces questions sont basées sur les deux tables suivants, table employee et table reward.
 
 

Table employee
+-------------+------------+-----------+----------+--------------+-------------+
| Employee_id | First_name | Last_name |  Salary  | Joining_date | Departement |
+-------------+------------+-----------+----------+--------------+-------------+
|     1       |     Bob    |   Kinto   | 1000000  |  2019-01-20  |   Finance   |
|     2       |    Jerry   |  Kansxo   | 6000000  |  2019-01-15  |     IT      |
|     3       |    Philip  |   Jose    | 8900000  |  2019-02-05  |   Banking   |
|     4       |    John    |  Abraham  | 2000000  |  2019-02-25  |  Insurance  |
|     5       |   Michael  |  Mathew   | 2200000  |  2019-02-28  |   Finance   |
|     6       |    Alex    |  chreketo | 4000000  |  2019-05-10  |     IT      |
|     7       |    Yohan   |   Soso    | 1230000  |  2019-06-20  |   Banking   |
+-------------+------------+-----------+----------+--------------+-------------+
Table reward (Prime)
+-----------------+-------------+--------+
| Employee_ref_id | date_reward | amount |
+-----------------+-------------+--------+
|         1       | 2019-05-11  |  1000  | 
|         2       | 2019-02-15  |  5000  |
|         3       | 2019-04-22  |  2000  |
|         1       | 2019-06-20  |  8000  |
+-----------------+-------------+--------+
Télécharger le fichier contenant les instructions SQL permettant la création des tables. (Cliquez ici)

 

Questions

1. Récupérez le département et le salaire total, regroupé par département, et trié par le salaire total par ordre décroissant.

SELECT Departement, SUM(salary) AS total 
FROM employee 
GROUP BY Departement 
ORDER BY total DESC;

 

MySQL GROUP BYMySQL GROUP BYLa clause GROUP BY est utilisée pour regrouper des lignes ayant les mêmes valeurs, et est utilisée dans l’instruction SELECT avec des fonctions d’agrégation telles…Lire plus MySQL ORDER BYMySQL ORDER BYLe mot clé ORDER BY permet de trier l’ensemble de résultats par ordre croissant ou décroissant. Le mot clé ORDER BY trie les enregistrements par…Lire plus

 

2. Récupérez le département, le nombre d’employés dans ce département et le salaire total regroupé par département, et trié par le salaire total par ordre décroissant.

SELECT Departement, COUNT(First_name), SUM(salary) AS total 
FROM employee 
GROUP BY Departement 
ORDER BY total DESC;

 

 

3. Récupérez le salaire moyen par département, et par ordre croissant du salaire.

SELECT Departement, AVG(salary) AS MoySalary 
FROM employee 
GROUP BY Departement 
ORDER BY MoySalary ASC;

 

 

Différence entre index cluster et non-clusterDifférence entre index cluster et non-clusterLes index cluster et non cluster sont les deux types d’index qui peuvent améliorer les performances lors du sélection de données avec des champs qui…Lire plus

4. Récupérez le salaire maximum par département, et par ordre croissant du salaire.

SELECT Departement , MAX(salary) AS MaxSalary
FROM employee 
GROUP BY Departement  
ORDER BY MaxSalary ASC;

 

 

5. Récupérez le salaire minimum par département, et par ordre croissant du salaire.

SELECT Departement, MIN(salary) AS MinSalary 
FROM employee 
GROUP BY Departement 
ORDER BY MinSalary ASC;

 

 

6. Récupérez le nombre d’employés regroupé par l’année et le mois d’adhésion.

SELECT YEAR(joining_date) AS "Année d'adhésion", 
       MONTH(joining_date) AS "Mois d'adhésion", 
       count(*) AS total_emp
FROM employee 
GROUP BY YEAR(joining_date), MONTH(joining_date);

 

 

7. Récupérez le département et le salaire total regroupé par le département, où le salaire total supérieur à 1000000, et trié par ordre décroissant du salaire total.

SELECT Departement, SUM(salary) AS total_salary 
FROM employee 
GROUP BY Departement 
HAVING SUM(salary) > 1000000 
ORDER BY total_salary DESC;

 

MySQL HAVINGMySQL HAVINGLa clause HAVING est utilisée dans l’instruction SELECT pour spécifier des conditions de filtre pour un groupe de lignes ou d’agrégats. La clause HAVING est…Lire plus

 

8. Récupérez tous les détails d’un employé si ce dernier existe dans la table Reward? Ou autrement dit, trouver les employées ayant des primes.

SELECT e.* FROM Employee AS e
WHERE EXISTS(
         SELECT r.Employee_ref_id FROM reward AS r 
         WHERE e.Employee_id = r.Employee_ref_id
);

 

MySQL EXISTSMySQL EXISTSDans ce tutoriel nous allons découvrir comment utiliser l’opérateur MySQL EXISTS pour vérifier si une donnée existe dans une table et quand l’utiliser pour améliorer…Lire plus

 

9. Comment récupérer des données communes dans deux résultats de requête?

Syntaxe SQL:

SELECT * FROM employee WHERE employee_id 
INTERSECT 
SELECT * FROM employee WHERE employee_id < 3;

 
Notez que MySQL ne supporte pas l’opérateur INTERSECT.
Équivalent de INTERSECT en MySQLÉquivalent de INTERSECT en MySQLDans ce tutoriel nous allons vous présenter l’opérateur INTERSECT et vous montrer comment émuler l’opérateur MySQL INTERSECT.     Notez que MySQL ne supporte pas…Lire plus

 

10. Récupérez les identifiants d’employés qui n’ont pas reçu de récompense sans utiliser de sous-requêtes?

Syntaxe SQL:

SELECT employee_id FROM Employee
MINUS
SELECT employee_ref_id FROM Reward;

 
Notez que MySQL ne supporte pas l’opérateur MINUS.
Équivalent de MINUS en MySQLÉquivalent de MINUS en MySQLDans ce tutoriel nous allons vous présenter l’opérateur MINUS et vous montrer comment émuler l’opérateur MySQL MINUS.     Notez que MySQL ne supporte pas…Lire plus

 

 
 
Partagez cet article

2 réflexions sur “Questions techniques sur MYSQL – Partie 5

  • Avatar
    mars 9, 2020 à 1:51
    Permalien

    Je pense que la question 8 est pour trouver les employées ayant des primes. Donc, la réponse est :
    SELECT E.* FROM Employee AS E
    WHERE EXISTS(
    SELECT R.Employee_ref_id from reward AS R where E.Employee_id = R.Employee_ref_id
    );

    +————-+————+———–+———+————–+————-+
    | Employee_id | First_name | Last_name | Salary | Joining_date | Departement |
    +————-+————+———–+———+————–+————-+
    | 1 | Bob | Kinto | 1000000 | 2019-01-20 | Finance |
    | 2 | Jerry | Kansxo | 6000000 | 2019-01-15 | IT |
    | 3 | Philip | Jose | 8900000 | 2019-02-05 | Banking |
    +————-+————+———–+———+————–+————-+

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *