Sous - requêtes SQL pour l'analyse de données

SQLSQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à utiliser les sous - requêtes pour extraire des informations pertinentes des tables employé (emp) et département (dept) de la base de données du personnel. Vous allez pratiquer l'écriture de requêtes SQL complexes pour accéder et analyser des données issues de plusieurs tables.

👀 Aperçu

Image d'aperçu de la requête SQL

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment démarrer le serveur MySQL et importer la base de données du personnel
  • Comment utiliser une sous - requête pour trouver l'employé ayant le salaire le plus élevé
  • Comment calculer la proportion d'employés dans un département spécifique par rapport à l'entreprise entière
  • Comment extraire tous les employés travaillant dans un emplacement spécifique à l'aide d'une sous - requête
  • Comment trouver les employés dont le salaire dépasse la moyenne du salaire de leur département

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre le concept et l'utilisation des sous - requêtes en SQL
  • Écrire des requêtes SQL complexes qui combinent des données issues de plusieurs tables
  • Analyser et extraire des informations significatives à partir d'une base de données à l'aide de sous - requêtes
  • Montrer vos compétences SQL dans un scénario pratique et concret

Démarrer MySQL et importer la base de données

Dans cette étape, vous allez apprendre à démarrer le serveur MySQL et à importer la base de données du personnel.

  1. Démarrez le serveur MySQL en utilisant la commande sudo sans mot de passe :
sudo service mysql start
  1. Accédez à l'invite MySQL :
sudo mysql
  1. Importez les données du fichier personnel.sql dans la base de données MySQL :
SOURCE /home/labex/project/personnel.sql;

Cela créera la base de données personnel et la remplira avec les tables et les données nécessaires.

Interroger l'employé ayant le salaire le plus élevé

Dans cette étape, vous allez apprendre à utiliser une sous - requête pour extraire le nom de l'employé ayant le salaire le plus élevé.

  1. Créez un nouveau fichier nommé subquery.sql dans le répertoire /home/labex/project.
  2. Dans le fichier subquery.sql, ajoutez la requête SQL suivante :
-- Requête pour extraire l'employé(e) ayant le salaire le plus élevé
SELECT ename AS `Nom` FROM emp WHERE sal = (SELECT MAX(sal) FROM emp);

Cette requête trouve d'abord le salaire maximum dans la table emp à l'aide d'une sous - requête, puis sélectionne le ename (nom de l'employé) de l'employé(e) ayant ce salaire maximum.

Calculer la proportion d'employés dans le département 10

Dans cette étape, vous allez apprendre à utiliser une sous - requête pour calculer la proportion d'employés dans le département 10 par rapport à l'entreprise entière.

  1. Dans le fichier subquery.sql, ajoutez la requête SQL suivante :
-- Requête pour calculer la proportion d'employés dans le département 10
SELECT d.dname AS Département, COUNT(e.empno) / (SELECT COUNT(empno) FROM emp) AS Proportion
FROM emp e
JOIN dept d ON e.deptno = d.deptno
WHERE d.deptno = 10;

Cette requête compte d'abord le nombre d'employés dans le département 10 en joignant les tables emp et dept. Elle divise ensuite ce compte par le nombre total d'employés dans la table emp (en utilisant une sous - requête) pour calculer la proportion.

Récupérer les employés travaillant à New York

Dans cette étape, vous allez apprendre à utiliser une sous - requête pour récupérer tous les employés travaillant à l'emplacement New York.

  1. Dans le fichier subquery.sql, ajoutez la requête SQL suivante :
-- Requête pour récupérer tous les employés travaillant à New York
SELECT e.*
FROM emp e
JOIN dept d ON e.deptno = d.deptno
WHERE d.loc = 'NEW YORK';

Cette requête joint les tables emp et dept pour récupérer les employés dont le département est situé à New York.

Récupérer les employés dont le salaire dépasse la moyenne du département

Dans cette étape, vous allez apprendre à utiliser une sous - requête pour récupérer les employés dont le salaire est supérieur à la moyenne salariale de leur département respectif.

  1. Dans le fichier subquery.sql, ajoutez la requête SQL suivante :
-- Requête pour récupérer les employés dont le salaire est supérieur à la moyenne salariale de leur département respectif
SELECT e.* FROM emp e
JOIN (SELECT deptno, AVG(sal) AS avg_sal FROM emp GROUP BY deptno) AS avg
ON e.deptno = avg.deptno
WHERE e.sal > avg.avg_sal;

Cette requête calcule d'abord la moyenne salariale pour chaque département à l'aide d'une sous - requête. Elle joint ensuite cette sous - requête à la table emp pour sélectionner les employés dont le salaire est supérieur à la moyenne salariale de leur département.

Après avoir effectué ces étapes, votre fichier subquery.sql devrait contenir toutes les requêtes SQL nécessaires pour répondre aux exigences du projet.

  1. Enregistrez le fichier.
  2. Dans l'invite MySQL, exécutez la commande suivante pour exécuter le script subquery.sql :
SOURCE /home/labex/project/subquery.sql;

Vous devriez voir la sortie suivante :

Résultat d'exécution de la requête SQL
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires dans LabEx pour améliorer vos compétences.