Les analystes data doivent impérativement maîtriser un noyau dur de requêtes SQL pour extraire et transformer les données efficacement. Ces commandes permettent de filtrer, agréger, fusionner et manipuler les données. Découvrez les requêtes incontournables qui donnent le vrai pouvoir sur vos bases.
3 principaux points à retenir.
- SELECT, WHERE, ORDER BY : bases pour extraire et filtrer précisément les données.
- GROUP BY, HAVING : essentiels pour résumer et filtrer sur des agrégats.
- JOIN, UNION, fonctions avancées : pour combiner et transformer les datasets complexes.
Comment extraire et filtrer les données efficacement
Si tu te lances dans l’univers des données, tu dois absolument maîtriser la commande SELECT. C’est ta meilleure amie, ta première étape pour plonger dans les entrailles d’une base de données. Un simple SELECT te permet de choisir les colonnes que tu souhaites examiner. Par exemple, si tu veux les noms et les salaires de tes employés, tu vas écrire :
SELECT name, salary FROM employees;
Mais que faire lorsque tu veux te concentrer sur un certain groupe d’employés ? C’est là qu’intervient la clause WHERE. Elle te permet de filtrer les résultats selon des critères bien précis. Par exemple, pour n’afficher que les employés du département de la Finance, utilise :
SELECT * FROM employees WHERE department = 'Finance';
Facile, non ? Mais attends, ça pourrait être encore mieux ! Avec ORDER BY, tu peux trier les résultats. Si tu veux connaître les employés dans l’ordre de leurs salaires, fais :
SELECT name, salary FROM employees ORDER BY salary DESC;
Tu risques d’avoir envie de voir uniquement le top des employés, n’est-ce pas ? Grâce à LIMIT, tu peux restreindre le nombre de résultats retournés. Voici comment tu pourrais obtenir les 5 employés avec les salaires les plus élevés :
SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 5;
Imaginons maintenant que tu veux éviter les doublons. C’est là que DISTINCT entre en jeu :
SELECT DISTINCT department FROM employees;
Ce qui te donne une liste des départements sans répétitions. C’est parfait pour avoir des données épurées et agréables à lire.
Pour résumer, voici un tableau qui synthétise ces commandes :
| Commandes SQL | Description |
|---|---|
| SELECT | Récupère des colonnes spécifiques ou toutes les colonnes. |
| WHERE | Filtre les résultats selon des critères définis. |
| ORDER BY | Trie les résultats selon des critères (croissant ou décroissant). |
| DISTINCT | Élimine les doublons dans les résultats. |
| LIMIT | Restreint le nombre de résultats retournés. |
Tu vois, l’art de manipuler les données avec SQL n’est pas sorcier ! N’hésite pas à te plonger encore plus dans le sujet via ce lien pour approfondir ta compréhension du SQL.
Comment résumer et analyser les données avec agrégations
Lorsqu’il s’agit d’analyser et de résumer des données, la clause GROUP BY se présente comme une pièce maîtresse à la disposition des data analysts. Elle permet de regrouper les données en fonction d’une ou plusieurs colonnes, simplifiant ainsi les calculs sur chaque groupe. Imaginez que vous souhaitez connaître la moyenne des salaires par département : cette clause sera votre meilleure alliée.
Utiliser GROUP BY en conjonction avec des fonctions d’agrégation rend l’analyse de données encore plus puissante. Les fonctions comme COUNT, SUM, AVG, MIN, et MAX sont fondamentales. Par exemple :
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
Cette requête ne fait pas que grouper les employés par département, elle calcule également leur salaire moyen. Un coup double, n’est-ce pas ?
Mais parlons de HAVING, souvent sous-estimé. Cette clause est conçue pour filtrer les résultats des groupes créés par GROUP BY. Contrairement à WHERE, qui agit sur les lignes avant l’agrégation, HAVING intervient après, sur les agrégats résultants. Pour filtrer les départements qui ont plus de 10 employés, vous pourriez écrire :
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
Cette requête renvoie uniquement les départements avec un personnel conséquent, révélant ainsi des insights précieux pour la gestion des ressources humaines.
On peut également combiner GROUP BY avec ORDER BY pour trier les résultats des agrégats. Par exemple, pour obtenir les départements triés par salaire moyen de manière décroissante :
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
ORDER BY avg_salary DESC;
Pour vous donner une vue d’ensemble, voici un tableau récapitulatif des fonctions d’agrégation usuelles et leurs usages :
| Fonction | Description |
|---|---|
| COUNT() | Compte le nombre de lignes |
| SUM() | Calcule la somme d’une colonne |
| AVG() | Calcule la moyenne d’une colonne |
| MIN() | Renvoie la valeur minimale |
| MAX() | Renvoie la valeur maximale |
Pour une maîtrise complète de SQL, n’hésitez pas à explorer des ressources comme ceci.
Comment combiner et enrichir les données entre plusieurs tables
Dans le monde des données, savoir combiner et enrichir des informations provenant de plusieurs tables est essentiel. C’est là qu’intervient la magie de JOIN. Cette commande permet de fusionner des données en reliant des clés communes. Imaginez que vous ayez une table avec les employés et une autre avec les départements. Pour obtenir une vision complète de votre organisation, une simple ligne de code peut faire toute la différence.
SELECT e.name, d.name AS department
FROM employees e
JOIN departments d ON e.dept_id = d.id;
Avec cet INNER JOIN, vous récupérez les noms des employés liés à leurs départements respectifs. Il y a aussi le LEFT JOIN, qui vous permet de récupérer toutes les lignes de la table de gauche même si aucune correspondance n’existe dans la table de droite. Cela est particulièrement utile pour identifier des informations incomplètes.
Mais ne vous arrêtez pas là ! Vous pouvez aussi combiner les résultats de requêtes distinctes avec UNION. Cela vous permet de formater votre sortie comme un jeu unique tout en éliminant les doublons. Si vous avez deux listes, une d’employés et une de clients, l’utilisation de UNION vous donnera une liste sans répétitions.
SELECT name FROM employees
UNION
SELECT name FROM customers;
Et si vous souhaitez conserver tous les doublons, il suffit d’opter pour UNION ALL. C’est simple, non ?
Passons maintenant à la manipulation des données textuelles. Les fonctions chaînes de caractères comme CONCAT et LENGTH vous permettent de jouer sur le texte. Vous pouvez par exemple créer un nom complet à partir du prénom et du nom de famille, tout en mesurant la longueur de ces chaînes.
SELECT CONCAT(first_name, ' ', last_name) AS full_name,
LENGTH(first_name) AS name_length FROM employees;
En ce qui concerne les données temporelles, des fonctions comme DATEDIFF et CURRENT_DATE sont vos alliées pour effectuer des calculs avec des dates. Par exemple, cela vous permettrait de savoir depuis combien de jours un employé travaille dans l’entreprise.
SELECT name, hire_date,
DATEDIFF(CURRENT_DATE, hire_date) AS days_at_company
FROM employees;
La créativité ne s’arrête pas là : vous pouvez également introduire la conditionnalité dans vos colonnes avec CASE. Cela vous permet de catégoriser des employés en fonction de leur âge pour créer une colonne d’expérience.
SELECT name,
CASE
WHEN age
Enfin, lorsque vous traitez des valeurs nulles, la fonction COALESCE est là pour vous aider. Elle renverra la première valeur non nulle d'une liste, ce qui peut être crucial lorsqu'il s'agit de maintenir la qualité de vos données.
SELECT name, COALESCE(phone, 'N/A') AS contact_number
FROM customers;
Dans ce domaine, ce sont ces compétences qui vous permettront vraiment de briller et de transformer des données brutes en informations exploitables.
Comment réaliser des analyses avancées avec sous-requêtes et fonctions fenêtres
Plongeons dans les profondeurs du SQL avec les sous-requêtes et les fonctions fenêtres. Ces outils peuvent sembler un peu intimidants au premier abord, mais une fois apprivoisés, ils deviennent des alliés redoutables pour toute analyse avancée.
Commençons par les sous-requêtes, ou ces petites requêtes cachées dans des requêtes plus grosses. Imaginez-vous à une réunion : vous devez comparer les performances d’un groupe, mais vous ne disposez qu’un rapport qui cache tous les chiffres importants. Les sous-requêtes fonctionnent de la même manière, vous permettant de filtrer ou de comparer des données de façon dynamique. Par exemple, considérez cette requête qui sélectionne les employés dont le salaire dépasse la moyenne :
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
Cela vous donne non seulement les employés au-dessus d’un certain seuil, mais vous vous basez en plus sur une donnée dynamique, la moyenne des salaires, qui elle-même est calculée à la volée.
Passons maintenant aux fonctions fenêtres. Contrairement aux agrégations classiques qui résument les données, les fonctions fenêtres maintiennent le détail ligne par ligne tout en appliquant des calculs. Prenons l'exemple de la fonction RANK(), qui nous permet de classer les employés par leur salaire sans faire de GROUP BY:
SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;
Cette requête attribue à chaque employé un rang basé sur son salaire, tout en gardant chaque employé visible dans le résultat. Pas besoin de sacrifier des données pour obtenir des informations précieuses, le rêve, non?
L'atout des fonctions fenêtres réside dans leur capacité à offrir des analyses fines et performantes. Imaginez pouvoir réaliser des cumuls, comparer des valeurs entre différents enregistrements sans vous soucier de grouper vos données. C'est une toute nouvelle dimension d'analyse! Maîtriser ces outils sera crucial pour un analyste data contemporain, surtout dans un monde où la précision et l'efficacité sont devenues des atouts essentiels. Pour en savoir plus sur l’optimisation des requêtes SQL, consultez cet article sur DataCamp.
Prêt à exploiter pleinement vos données grâce au SQL maîtrisé ?
Maîtriser ces requêtes SQL fondamentales est une étape incontournable pour tout data analyst qui veut sortir du nivellement par le bas et produire des analyses fiables et rapides. Grâce à SELECT, WHERE ou JOIN vous accédez, filtrez et reliez vos données. GROUP BY et HAVING vous synthétisez des volumes massifs. Les fonctions avancées et les sous-requêtes enrichissent vos capacités d’analyse. Résultat : vous gagnez en autonomie et en précision, et vous mettez votre data au service direct des décisions business. Se former sérieusement au SQL, c’est prendre le contrôle total sur vos datas, sans plateau technique inutile.
FAQ
Quelles sont les requêtes SQL de base indispensables pour un data analyst ?
À quoi sert le GROUP BY et comment le combiner efficacement ?
Comment les JOIN améliorent-ils l’analyse SQL des données ?
Quand utiliser les sous-requêtes et les fonctions fenêtres ?
Comment gérer les valeurs nulles et créer des colonnes conditionnelles en SQL ?
A propos de l'auteur
Franck Scandolera, expert Analytics Engineer et formateur indépendant, accompagne depuis plus de dix ans des professionnels en Web Analytics, Data Engineering et automatisation intelligente. Basé en France, il maîtrise SQL, BigQuery, ainsi que la modélisation data et la transformation agile pour faciliter l’exploitation des données. Sa pédagogie percutante aide les analystes à gagner en efficacité en profondeur et pragmatisme.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
- Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
- Data Analyst & Analytics engineering : tracking avancé (GTM server, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
- Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
- Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.






