Pour un data analyst, maîtriser les requêtes SQL essentielles est indispensable pour extraire, transformer et analyser les données efficacement. Découvrez les commandes clés qui permettent d’exploiter au mieux les bases de données et ainsi produire des insights pertinents rapidement.
3 principaux points à retenir.
- SELECT, WHERE et ORDER BY : base de l’extraction et du tri précis de données.
- GROUP BY et HAVING : indispensables pour regrouper et filtrer les données agrégées.
- JOIN et UNION : manipuler plusieurs tables pour enrichir vos analyses.
Comment extraire et filtrer les données efficacement
La maîtrise de SQL commence par la compréhension de deux commandes fondamentales : SELECT et WHERE. Ces outils sont la pierre angulaire pour extraire des données pertinentes d’une base. Quand on parle d’analyse de données, choisir les informations correctes est tout aussi crucial que d’analyser les résultats. Imaginez une bibliothèque où vous ne pouvez consulter qu’un seul livre. Vous avez besoin de la bonne méthode pour dénicher l’ouvrage pertinent, n’est-ce pas ?
La commande SELECT vous permet de spécifier précisément quelles colonnes de données vous voulez extraire. Voici la syntaxe de base :
SELECT colonne1, colonne2 FROM table;
Si vous désirez récupérer toutes les colonnes, vous pouvez opter pour l’astérisque *, mais pour des analyses précises, il est préférable de sélectionner uniquement ce dont vous avez besoin. Par exemple :
SELECT name, age, salary FROM employees;
Cette requête extrait les colonnes name, age, et salary de la table employees.
Ensuite, pour aller plus loin, vous avez la commande WHERE, qui vous permet de filtrer les enregistrements selon des conditions précises, rendant votre extraction encore plus ciblée. Par exemple, si vous souhaitez voir uniquement les employés du département des Ventes, la requête sera :
SELECT * FROM employees WHERE department = 'Sales';
Cela limite les résultats aux seuls employés de ce département, ce qui est essentiel pour une analyse efficace.
Pour trier vos résultats dans un ordre spécifique, on utilise ORDER BY. Supposons que vous vouliez afficher les salariés triés par salaire décroissant, la requête ressemblera à ceci :
SELECT name, salary FROM employees ORDER BY salary DESC;
Ce résultat s’affiche avec les plus hauts salaires en premier, ce qui peut révéler des tendances intéressantes sur la répartition des rémunérations au sein de l’entreprise.
En somme, maîtriser SELECT et WHERE est essentiel pour atteindre une extraction de données efficace, permettant aux analystes d’atteindre rapidement les insights recherchés. Si vous voulez en savoir plus sur les bases de SQL, visitez cette page.
Comment résumer et filtrer les groupes de données
Dans le monde du SQL, le GROUP BY est un outil puissant qui transforme la manière dont nous analysons les données. Imaginez que vous êtes dans un café bondé, entouré d’une foule et que vous souhaitez savoir combien de personnes commandent des expressos par rapport à des cappuccinos. GROUP BY est votre messager ! Il regroupe les données similaires, facilitant ainsi nos analyses.
Pour illustrer cela, prenons un exemple avec des employés et leurs salaires. Supposons que vous voulez savoir quel est le salaire moyen pour chaque département de votre entreprise. Vous pourriez utiliser la requête suivante :
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
Cette requête va grouper tous les employés par leur département respectif et calculer la moyenne des salaires au sein de chaque groupe. Le résultat vous donnera un aperçu clair de l’état salarial dans chaque département, essentiel pour la prise de décisions stratégiques, comme le budget salarial ou la politique de recrutement.
Mais qu’en est-il si vous souhaitez raffiner encore plus vos résultats ? C’est là que le HAVING entre en jeu. En effet, HAVING vous permet de filtrer les groupes de données déjà agrégées en appliquant des conditions. Prenons l’exemple où vous souhaitez uniquement voir les départements qui ont plus de 10 employés :
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
Avec cette requête, vous obtiendrez uniquement les départements ayant suffisamment d’employés pour une analyse significative. Cela garantit que vos données sont non seulement précises, mais aussi pertinentes pour les conclusions que vous tirerez.
En tant qu’analyste de données, maîtriser ces techniques vous permettra de transformer de simples chiffres en histoires révélatrices. Vous pourrez ainsi prendre des décisions éclairées basées sur des faits concrets. Vous voulez aller plus loin dans vos compétences SQL ? Découvrez des ressources supplémentaires sur ce lien.
Comment combiner et enrichir des données issues de plusieurs tables
Quand on parle de manipulation de données, l’art de combiner et d’enrichir les informations de plusieurs tables est un must. C’est ici que les commandes SQL JOIN et UNION entrent en jeu, chacune avec son rôle unique mais complémentaire.
Commençons par le JOIN, un véritable outil clé pour relier différentes tables via une colonne commune. Imaginez que vous ayez une table contenant des employés et une autre table listant les départements. Vous voulez les noms des employés accompagnés de leur département. Voilà l’occasion d’utiliser un JOIN :
SELECT e.name, d.name AS department
FROM employees e
JOIN departments d ON e.dept_id = d.id;
Cette requête tisse le lien entre les employés et les départements, offrant une vision claire des ressources humaines de votre entreprise. C’est le genre de résultat que vous voulez dans vos analyses, non ? La beauté de JOIN réside dans sa capacité à rassembler des données connexes sans multiplier les résultats. Pour aller plus loin sur les différents types de jointures, n’hésitez pas à consulter cet article.
À l’opposé, le UNION se charge de combiner les résultats de plusieurs requêtes. Imaginez une situation où vous devez fusionner une liste de noms d’employés avec une liste de noms de clients. Grâce à UNION, vous pouvez simplement créer une liste unique qui regroupe les deux :
SELECT name FROM employees
UNION
SELECT name FROM customers;
Contrairement à JOIN, qui combine des données de tables reliées, UNION concatène les résultats de requêtes à parts égales, éliminant les doublons par défaut. Si vous souhaitez garder tous les enregistrements, même les doublons, vous pouvez opter pour UNION ALL.
Dans un monde où les données sont éparpillées sur différentes tables, maîtriser JOIN et UNION n’est pas juste un atout : c’est une nécessité pour réaliser des analyses complexes et tirer des conclusions éclairées.
Comment transformer les données avec des fonctions avancées
Manipuler les données, c’est un peu comme faire de la magie avec les chiffres. Avec SQL, vous avez des baguettes puissantes à votre disposition pour transformer, combiner et rendre vos données pétillantes de sens. Les fonctions avancées comme CONCAT, LENGTH, et DATEDIFF sont vos alliées. Imaginez les possibilités : vous avez des noms et des dates, et vous souhaitez les fusionner et les interpréter. C’est l’heure de la magie !
Pour combiner des chaînes de caractères, la fonction CONCAT est une aubaine. Supposons que vous ayez une base de données d’employés contenant leurs prénoms et noms de famille. Plutôt que de les afficher séparément, pourquoi ne pas créer une colonne qui affiche le nom complet ? Voici comment :
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
Avec cette simple ligne, vous obtiendrez un joli champ full_name qui unit les prénoms et noms. Cela donne une identité bien plus palpable à vos données. Et ça ne s’arrête pas là. Que dire de la fonction LENGTH ? Besoin de savoir combien de caractères contient un prénom ? Regardez cela :
SELECT first_name, LENGTH(first_name) AS name_length FROM employees;
C’est une bonne manière de jouer avec les données sans même quitter votre salle de serveurs.
Ensuite, lorsque vous traitez les dates, la fonction DATEDIFF peut vous raconter de belles histoires. Vous voulez connaître l’ancienneté d’un employé ? Voici comment le faire :
SELECT name, hire_date, DATEDIFF(CURRENT_DATE, hire_date) AS days_at_company FROM employees;
Cela vous donnera exactement combien de jours chaque employé a passé dans votre entreprise. Utile, n’est-ce pas ?
Enfin, jongler avec les valeurs manquantes peut être déconcertant, mais COALESCE est votre bouée de sauvetage. Imaginons que vous ayez des employés sans numéro de téléphone enregistré. Pas de panique, remplacez les valeurs nulles par un « N/A » grâce à :
SELECT name, COALESCE(phone, 'N/A') AS contact_number FROM customers;
Avec ça, vous indiquez clairement aux lecteurs de vos rapports qu’il y a un manque d’information sans leur laisser l’impression que quelque chose a disparu dans les limbes de la base de données.
Ces fonctions vous propulsent vers une analyse de données efficace, tout en simplifiant la lecture et la compréhension. En jouant avec des boucles logiques comme CASE, vous pouvez aussi définir des catégories d’expérience selon l’âge :
SELECT name, CASE WHEN age < 30 THEN 'Junior'
WHEN age BETWEEN 30 AND 50 THEN 'Mid-level'
ELSE 'Senior'
END AS experience_level
FROM employees;
C’est comme appliquer une couche de peinture brillante à une œuvre d’art déjà belle. Bref, ces fonctions avancées sont essentielles pour transformer vos données brutes en informations exploitables. Et si vous cherchez à en savoir plus sur l'optimisation de vos requêtes SQL, jetez un œil ici : Optimisation des requêtes SQL.
Comment optimiser l’analyse avec les sous-requêtes et fonctions fenêtres
Les sous-requêtes et les fonctions fenêtres en SQL ne sont pas seulement des outils ; ce sont de véritables alliés pour quiconque s’aventure dans les méandres des bases de données. Imaginez que vous soyez analyste de données dans une grande entreprise et que vous deviez comparer les salaires des employés à la moyenne de l’ensemble des employés. Une sous-requête permet d’atteindre cet objectif avec aisance.
Considérez la requête suivante :
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
Dans cet exemple, la sous-requête calcule la moyenne des salaires de l'ensemble des employés, tandis que la requête principale extrait les noms et les salaires des employés dont la rémunération dépasse cette moyenne. C’est astucieux, non ? Cela permet de dresser un tableau plus nuancé des données.
Mais le vrai charme se dévoile avec les fonctions fenêtres. Elles permettent de réaliser des calculs tout en conservant les détails de chaque ligne, sans perdre la granularité des informations. Prenons l'exemple du classement des salariés selon leur salaire :
SELECT name, salary,
RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;
Cette simple requête utilise la fonction RANK() pour trier les employés par salaire, attribuant un rang à chacun sans cristalliser les résultats. Ce qui est fascinant avec les fonctions fenêtres, c'est qu’elles nous permettent d'analyser nos données de manière plus dynamique, en observant les relations entre les enregistrements tout en gardant un œil sur les détails individuels.
En somme, ces techniques, comme les sous-requêtes et les fonctions fenêtres, apportent une précision et une richesse d'analyse qui transcendent la simple extraction de données. Vous pouvez ainsi non seulement voir les données brutes mais aussi les contextualiser, les comparer, les hiérarchiser. Pour aller plus loin dans votre compréhension des requêtes SQL avancées, le site Learn SQL propose des ressources intéressantes.
Pourquoi maîtriser ces requêtes SQL transforme votre efficacité en data analyse ?
Maîtriser ces requêtes SQL fondamentales est crucial pour tout data analyst souhaitant transformer des masses de données brutes en insights exploitables. En combinant extraction ciblée, agrégation, jointures et fonctions avancées, vous gagnez en précision, rapidité et pertinence. Cette expertise vous permet de fluidifier vos workflows et d’assurer des analyses robustes, exactes et adaptées au business. En bref, bien manier SQL, c’est l’assurance d’armer vos analyses pour faire parler la donnée sans perdre de temps ni de crédibilité.
FAQ
Quels sont les premiers pas pour débuter avec SQL en analyse de données ?
Quelle différence entre JOIN et UNION en SQL ?
Comment gérer les valeurs manquantes dans une base SQL ?
À quoi servent les fonctions fenêtres dans SQL ?
Quand utiliser la clause HAVING en SQL ?
A propos de l'auteur
Franck Scandolera, Analytics Engineer et formateur indépendant depuis 2013, accompagne agences et entreprises francophones dans la maîtrise des outils data avancés. Expert en SQL, Data Engineering et automatisation, il conçoit aussi des parcours de formation pragmatiques pour rendre l’analyse accessible et efficace. Basé à Brive-la-Gaillarde, il partage un savoir-faire robuste mêlant technique pointue et approche métier, garantissant des résultats concrets dans les projets data.
⭐ 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.






