Cours SQL pour Analystes de Données
Ce cours est conçu pour les analystes de données souhaitant maîtriser SQL, le langage
de requêtes utilisé pour interroger et manipuler les bases de données relationnelles.
1. Introduction à SQL et aux bases de données relationnelles
Qu'est-ce que SQL ?
SQL (Structured Query Language) est un langage standard utilisé pour interagir avec les
bases de données relationnelles. Il permet de :
• Créer des bases de données et des tables
• Insérer, mettre à jour et supprimer des données
• Interroger et analyser les données
Qu'est-ce qu'une base de données relationnelle ?
Une base de données relationnelle stocke les données sous forme de tables (appelées
aussi "relations"). Chaque table est composée de :
• Colonnes : les champs qui définissent le type de données (exemple : nom, âge,
salaire)
• Lignes : les enregistrements individuels
Exemple de table Employés :
id nom département salaire
1 Alice IT 50000
2 Bob Marketing 45000
3 Charlie Finance 60000
2. Requêtes SQL de Base
SELECT : Lire des données
La requête SELECT est utilisée pour récupérer des données d'une table.
Syntaxe :
SELECT colonne1, colonne2
FROM nom_de_table;
Exemple :
SELECT nom, salaire
FROM Employés;
Résultat :
nom salaire
Alice 50000
Bob 45000
Charlie 60000
WHERE : Filtrer les données
La clause WHERE permet de filtrer les résultats en fonction d'une condition.
Syntaxe :
SELECT colonne1, colonne2
FROM nom_de_table
WHERE condition;
Exemple :
SELECT nom, salaire
FROM Employés
WHERE salaire > 45000;
Résultat :
nom salaire
Alice 50000
Charlie 60000
ORDER BY : Trier les données
La clause ORDER BY permet de trier les résultats en ordre croissant (ASC) ou
décroissant (DESC).
Syntaxe :
SELECT colonne1, colonne2
FROM nom_de_table
ORDER BY colonne1 [ASC|DESC];
Exemple :
SELECT nom, salaire
FROM Employés
ORDER BY salaire DESC;
Résultat :
nom salaire
Charlie 60000
Alice 50000
Bob 45000
GROUP BY : Grouper les données
La clause GROUP BY est utilisée pour grouper les lignes ayant des valeurs similaires et
effectuer des calculs d'agrégat comme COUNT(), SUM(), AVG(), etc.
Syntaxe :
SELECT colonne1, fonction_agrégat(colonne2)
FROM nom_de_table
GROUP BY colonne1;
Exemple :
SELECT département, AVG(salaire) AS salaire_moyen
FROM Employés
GROUP BY département;
Résultat :
département salaire_moyen
IT 50000
Marketing 45000
Finance 60000
HAVING : Filtrer les groupes
La clause HAVING permet de filtrer les résultats d'un GROUP BY.
Exemple :
SELECT département, AVG(salaire) AS salaire_moyen
FROM Employés
GROUP BY département
HAVING AVG(salaire) > 47000;
Résultat :
département salaire_moyen
IT 50000
Finance 60000
3. Requêtes SQL Intermédiaires
JOIN : Combiner plusieurs tables
Le JOIN est utilisé pour combiner des données provenant de plusieurs tables.
INNER JOIN
Affiche uniquement les correspondances entre les tables.
Syntaxe :
SELECT a.colonne1, b.colonne2
FROM table1 a
INNER JOIN table2 b ON a.cle_commune = b.cle_commune;
Exemple : Si vous avez deux tables :
• Employés (id, nom, département_id)
• Départements (id, nom_departement)
SELECT Employé[Link], Départements.nom_departement
FROM Employés
INNER JOIN Départements ON Employés.département_id = Dé[Link];
CASE : Ajouter de la logique conditionnelle
La clause CASE permet d'ajouter des conditions directement dans les requêtes.
Exemple :
SELECT nom,
CASE
WHEN salaire >= 60000 THEN 'Élevé'
WHEN salaire >= 50000 THEN 'Moyen'
ELSE 'Faible'
END AS catégorie_salaire
FROM Employés;
Résultat :
nom catégorie_salaire
Alice Moyen
Bob Faible
Charlie Élevé
4. Requêtes SQL Avancées
CTE (Common Table Expressions)
Les CTE sont des requêtes temporaires utilisées pour simplifier les requêtes complexes.
Syntaxe :
WITH CTE_Nom AS (
SELECT colonne1, colonne2
FROM table
SELECT * FROM CTE_Nom;
Exemple :
WITH Ventes_CTE AS (
SELECT vendeur_id, SUM(ventes) AS total_ventes
FROM Ventes
GROUP BY vendeur_id
SELECT * FROM Ventes_CTE
WHERE total_ventes > 10000;
Window Functions : Fonctions Fenêtre
Les Window Functions permettent de réaliser des calculs sur des sous-ensembles de
lignes sans les grouper.
Exemple :
SELECT nom, département, salaire,
RANK() OVER(PARTITION BY département ORDER BY salaire DESC) AS rang
FROM Employés;
5. Exercices Pratiques
1. Récupérez la liste des employés ayant un salaire supérieur à 50 000.
2. Calculez le salaire moyen par département.
3. Affichez les 3 employés les mieux payés de chaque département.
4. Trouvez le nombre total de ventes réalisées par chaque vendeur.
Vous êtes prêt à pratiquer SQL !