Questions techniques sur MYSQL – Partie 6

Dans cet article vous trouverez la suite du cinquiè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 20% du salaire de Bob, 10% du salaire de Alex et 15% du salaire des autres employés.

SELECT First_name, 
CASE First_name 
   WHEN 'Bob' THEN SALARY * .20 
   WHEN 'Alex' THEN SALARY * .10 
   ELSE SALARY * .15 
END 
AS "Salaire brut" 
FROM employee;

 
Dans cette requête nous avons utilisé l’instruction « CASE » pour obtenir les résultats souhaités.
 

Instruction CASE avec MySQLInstruction CASE avec MySQLDans ce tutoriel nous allons découvrir comment utiliser l’expression CASE dans MySQL avec une syntaxe et des exemples. L’expression CASE vous permet d’ajouter une logique…Lire plus

 

2. Afficher le texte ‘IT services’ à la place de ‘IT’, ‘Financial services’ à la place de ‘Finance’ et ‘Banking services’ à la place de ‘Banking’ à partir de la colonne « Departement ».

SELECT 
CASE Departement 
   WHEN 'IT' THEN 'IT services'
   WHEN 'Finance ' THEN 'Financial services' 
   WHEN 'Banking' THEN 'Banking services' 
END AS "Département"
FROM employee;

 

 

3. Supprimer les employés qui ont reçu des récompenses(reward).

DELETE 
FROM employee 
WHERE employee_id IN (
    SELECT employee_ref_id 
    FROM Reward
);
MySQL - Vérifier si une valeur existeMySQL – Vérifier si une valeur existeL’opérateur IN vous permet de vérifier si une valeur spécifiée correspond à une valeur dans un ensemble de valeurs ou des valeurs renvoyée par une…Lire plus

 

Différence entre trigger et procédure stockéeDifférence entre trigger et procédure stockéeQuelle est la différence entre trigger et procédure stockée ? – trigger et procédure stockée sont des composants avancé de SQL. Les deux exécutent une…Lire plus

4. Insérer un employé dont le nom(Last_name) contient le caractère simple quote '

INSERT INTO employee (Last_name) VALUES ('Alex''');

 

MySQL INSERT INTOMySQL INSERT INTODans ce tutoriel nous allons découvrir comment insérer des données avec MySQL. Pour insérer des données dans une table MySQL, vous devez utiliser la commande…Lire plus

 

5. Récupérer le nom des employés qui ne contient que des nombres.

SELECT * FROM employee WHERE LOWER(Last_name) = UPPER(Last_name);

 
Nous avons utilisé les deux fonctions Lower et Upper, car la comparaison entre deux nombres le résultat sera la même. Par contre s’il y a des alphabets dans la colonne, les résultats seront différents.

 

6. Classer les employés en fonction de leurs récompense(reward) pendant un mois.

SELECT First_name, 
       amount, 
       DENSE_RANK() OVER (PARTITION BY date ORDER BY amount DESC) AS Rank 
FROM Employee E, Reward R 
WHERE E.employee_id = R.employee_ref_id;

 
Afin de classer les employés en fonction de leur rang pendant un mois, le mot clé « DENSE_RANK » est utilisé. Ici, le mot-clé PARTITION nous aide à trier la colonne avec laquelle le filtrage est effectué. Le classement est fourni à la colonne spécifiée dans l’ordre. La requête ci-dessus classe les employés en fonction de leurs récompenses pour un mois donné.

 

7. Mettre à jour la récompense de « Bob » à la valeur 1000

UPDATE Reward 
SET amount ='1000' 
WHERE employee_ref_id = (
        SELECT employee_id 
        FROM employee 
        WHERE First_name='Bob'
);
MySQL UPDATEMySQL UPDATELa commande Update permet de modifier les lignes d’une table. La commande Update peut être utilisée pour modifier ou mettre à jour un ou plusieurs…Lire plus

 

8. Récupérer le prénom(First_name), le montant de la récompense(amount) 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;

 

Les jointures en MySQLLes jointures en MySQLLes jointures en MySQL sont utilisés avec l’instruction SELECT. Elles sont utilisées pour récupérer les données de plusieurs tables. Cette opération est effectuée chaque fois…Lire plus

 

Différence entre 3NF et BCNFDifférence entre 3NF et BCNFQuelle est la différence entre 3NF et BCNF ? – On recoure à la normalisation pour supprimer la redondance d’une relation, minimisant ainsi les anomalies…Lire plus

9. Récupérer le prénom, le montant de la récompense pour les employés qui ont des récompenses avec un montant supérieur à 2000.

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

 

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

 

10. 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.

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

 

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

 

 
 

Laisser un commentaire

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