Questions techniques sur MYSQL – Partie 7

Dans cet article vous trouverez la suite de la sixiè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érer le prénom, le montant de la récompense pour les employés même s’ils n’ont pas reçu de récompenses, et fixer un montant de récompense égal à 0 pour les employés qui n’ont pas reçu de récompenses.

Select First_name, IFNULL(amount,0) 
FROM Employee E 
LEFT JOIN Reward R 
ON E.employee_id = R.employee_ref_id;

 

Remplacer les valeurs NULL par d'autres valeurs dans MySQLRemplacer les valeurs NULL par d’autres valeurs dans MySQLLorsque vous effectuez une jointure (Left Join) ou une requête UNION, le SGBD place NULL là où il n’ya pas de correspondance dans l’ensemble. Dans…Lire plus MySQL LEFT JOINMySQL LEFT JOINLEFT JOIN est utilisé pour renvoyer les données de plusieurs tables. En particulier, la partie « GAUCHE » signifie que toutes les lignes de la table gauche…Lire plus

 

2. Récupérer le prénom de l’employée, le montant de la récompense pour les employés qui ont des récompenses.

SELECT First_name, amount 
FROM Employee E 
INNER JOIN Reward R 
ON E.employee_id = R.employee_ref_id;

 

MySQL INNER JOINMySQL INNER JOINinner JOIN est utilisée pour renvoyer des lignes de deux tables qui remplissent une condition donnée. Dans MySQL, INNER JOIN sélectionne toutes les lignes de…Lire plus

 

3. Récupérer le prénom, le montant de la récompense pour les employés qui ont des récompenses en utilisant Right Join.

SELECT First_name, IFNULL(amount,0) 
FROM Employee E 
RIGHT JOIN Reward R 
ON E.employee_id = R.employee_ref_id;

 

MySQL RIGHT JOINMySQL RIGHT JOINRIGHT JOIN est utilisé pour renvoyer les données de plusieurs tables. En particulier, la partie « DROITE » signifie que toutes les lignes de la table droite…Lire plus

 

Différence entre vue et vue matérialiséeDifférence entre vue et vue matérialiséeQuestion: Quelle est la différence entre une vue et une vue matérialisée? Sont-ils des vues? Que signifie rafraîchir une vue matérialisée?   Les deux sont…Lire plus

4. Récupérer la récompense(reward) maximal par employé à l’aide de sous-requête.

SELECT Departement, 
      (
         SELECT IFNULL(MAX(amount),0) 
         FROM Reward 
         WHERE employee_ref_id = employee_id
      ) AS max_reward
FROM Employee;

 

 

5. Récupérer le TOP salaire des 2 employés

SELECT * 
FROM employee 
ORDER BY salary DESC 
LIMIT 2;

 

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 MySQL LIMITMySQL LIMITLe mot clé LIMIT est utilisé pour limiter le nombre de lignes renvoyées dans le résultat d’une requête. Il peut être utilisé conjointement avec les…Lire plus

 

6. Récupérer le TOP salaire des N employés.

SELECT * 
FROM employee 
ORDER BY salary DESC 
LIMIT N;

 

7. Récupérer le 2ème salaire le plus élevé d’un employé.

SELECT MIN(salary) 
FROM (
        SELECT * 
        FROM employee 
        ORDER BY salary DESC 
        LIMIT 2
     ) AS S;

 

 

8. Récupérer le Nème salaire le plus élevé d’un employé.

SELECT MIN(salary) 
FROM (
        SELECT * 
        FROM employee 
        ORDER BY salary DESC 
        LIMIT N
     ) AS S;

 

Différence entre une entité forte et faibleDifférence entre une entité forte et faibleQuelle est la différence entre une entité forte et faible ? – Avant d’entamer la différence entre une entité forte et faible, nous devons savoir…Lire plus

9. Récupérer le prénom et le nom de l’employé sous forme de lignes séparées.

SELECT First_name 
FROM employee 
UNION 
SELECT Last_name 
FROM employee;

 

MySQL UNIONMySQL UNIONDans ce tutoriel nous allons découvrir comment utiliser l’opérateur MySQL UNION pour combiner deux ensembles de résultats ou plus, provenant de plusieurs instructions SELECT dans…Lire plus

 

10. Quelle est la différence entre UNION et UNION ALL?

UNION et UNION ALL sont utilisées pour sélectionner des informations à partir des tables qui ont des structures similaires. Cela signifie que les colonnes spécifiées dans l’union doivent avoir le même type de données. Exemple:

SELECT First_name 
FROM employee 
UNION 
SELECT Last_name 
FROM employee;

 
Dans la requête ci-dessus, si « FIRST_NAME » est DOUBLE et « LAST_NAME » est STRING, la requête ne fonctionnera pas. Le type de données des deux colonnes étant VARCHAR, l’union est possible. La différence entre UNION et UNION ALL est la suivante : la requête UNION ne renvoie que des valeurs distinctes.

 

 
 

Laisser un commentaire

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