Les requêtes SQL essentielles permettent au data analyst d’extraire, transformer et préparer efficacement les données pour l’analyse. Maîtriser ces commandes est clé pour manipuler les bases de données et générer des insights précis qui soutiennent des décisions business éclairées.
3 principaux points à retenir.
- SELECT, WHERE et JOIN forment la base de la manipulation des données relationnelles.
- GROUP BY, HAVING et fonctions aggrégées facilitent la synthèse et l’analyse statistique.
- Fonctions avancées comme WINDOW et CASE améliorent la flexibilité et la puissance des requêtes.
Comment extraire les données essentielles à analyser
Quand on parle de SQL, le mot « SELECT » s’élève comme le pilier fondamental de toute exploration de données. Une requête SQL de base commence souvent par ce mot emblématique, qui permet à un data analyst de choisir précisément les colonnes qu’il souhaite examiner. Imaginez une table employees avec des colonnes comme name, salary, et department. Avec la commande suivante, vous pouvez extraire des informations ciblées :
SELECT name, salary FROM employees;Cette requête retourne le nom et le salaire de tous les employés, ni plus, ni moins. Mais que se passe-t-il si vous souhaitez concentrer votre recherche ? C’est là qu’intervient la clause WHERE. Supposons que vous ne soyez intéressé que par les employés du département Finance :
SELECT * FROM employees WHERE department = 'Finance';Ce qui vous permet de n’afficher que les employés dont le département est précisément « Finance ».
Pour ranger ces résultats de manière significative, la commande ORDER BY devient votre meilleur ami. Si vous souhaitez classer les employés par leur salaire en ordre décroissant, vous utilisez :
SELECT name, salary FROM employees ORDER BY salary DESC;Cela fait ressortir les salariés les mieux rémunérés en premier, idéal pour une analyse comparative. Mais que faire si vous voulez éliminer les doublons, par exemple, durant l’extraction des départements ? C’est ici que le mot-clé DISTINCT entre en jeu.
SELECT DISTINCT department FROM employees;Cette requête vous fournira une liste unique, sans répétition, des départements présents dans votre dataset.
Enfin, lorsque l’on traite de grandes tables, il est souvent nécessaire de limiter les résultats pour éviter d’être submergé par trop d’informations. La clause LIMIT fait cela très bien :
SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 5;Cela retournera seulement les 5 employés aux salaires les plus élevés, vous permettant ainsi de réaliser une analyse ciblée sans vous noyer dans les données. Pour résumer, voici un tableau synthétique de ces commandes essentielles :
| Commande SQL | Usage |
|---|---|
| SELECT | Choisir les colonnes à afficher |
| WHERE | Filtrer les résultats selon des conditions |
| ORDER BY | Trier les résultats |
| DISTINCT | Éliminer les doublons |
| LIMIT | Restreindre le nombre de résultats |
Ces magies du SQL ne sont pas seulement de simples lignes de code ; elles forment l’art de transformer du chaos en information pertinente. Et si vous voulez explorer d’autres aspects de SQL et de l’analyse de données, jetez un œil à cet article.
Comment regrouper et filtrer les données pour une analyse pertinente
Lorsque l’on se lance dans le monde des données, savoir regrouper et filtrer les informations est crucial. C’est là qu’intervient la clause GROUP BY. Imaginez-vous comme un chef d’orchestre, orchestrant les données pour en tirer la symphonie de l’analyse. Grâce à cette clause, vous pouvez regrouper les lignes par catégorie, par exemple par départment. Mais ce n’est pas tout, elle se marie parfaitement avec des fonctions d’agrégation telles que AVG(), SUM() ou COUNT() qui permettent de calculer des statistiques essentielles.
Considérons un exemple pratique : supposons que nous voulons connaître le salaire moyen par département dans notre entreprise. On peut écrire :
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;Cet exemple va regrouper les employés par département et calculer le salaire moyen pour chacun. Pratique, non ?
Même dans l’univers bien rangé des requêtes, des exceptions existent. La clause HAVING fait son apparition pour filtrer les résultats après l’agrégation. Cela signifie que vous pouvez appliquer des conditions sur des valeurs agrégées. Par exemple, si vous voulez uniquement les départements ayant plus de 10 employés, vous pourriez écrire :
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;Les départements avec moins de 10 employés seraient écartés, vous offrant une vision plus ciblée de votre entreprise.
Il est important de ne pas confondre WHERE et HAVING, même si les deux semblent similaires. WHERE filtre les données avant l’agrégation, tandis que HAVING le fait après. Prenons un exemple pour mieux distinguer ces deux clauses :
- WHERE: SELECT * FROM employees WHERE salary > 50000; – Cela renverra les employés ayant un salaire supérieur à 50 000 avant tout calcul d’agrégation.
- HAVING: SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10; – Cela ne renverra que les départements avec plus de 10 employés après que le regroupement soit fait.
En fin de compte, maîtriser ces clauses vous permettra non seulement d’extraire des informations pertinentes, mais aussi d’assurer que vos décisions sont basées sur des données solides. Et pour aller plus loin dans l’optimisation de vos requêtes SQL, explorez des ressources en ligne comme ce lien sur l’optimisation des requêtes SQL.
Comment combiner et transformer les données pour des insights complexes
Dans le monde des données, la capacité à combiner et transformer des informations pour obtenir des insights complexes est une compétence essentielle. Et pour cela, les jointures (JOIN) sont vos meilleures alliées. Elles permettent de mixer des données provenant de plusieurs tables, comme par exemple, une table des employés et une autre des départements. Imaginez que vous êtes un analyste des ressources humaines : pour afficher le nom de chaque employé avec son département, vous pouvez utiliser une requête SQL comme celle-ci :
SELECT e.name, d.name AS department
FROM employees e
JOIN departments d ON e.dept_id = d.id;Cela vous donne une vue claire de qui travaille où. Pas mal, non ? Mais le plaisir ne s’arrête pas là. Vous pouvez également utiliser UNION pour combiner des résultats distincts de différentes requêtes. Supposons que vous vouliez créer une liste de tous les employés et clients à partir de leurs tables respectives :
SELECT name FROM employees
UNION
SELECT name FROM customers;Et si vous avez besoin de manipuler des chaînes de caractères ou des dates, SQL a de quoi vous couvrir ! Avec des fonctions comme CONCAT et LENGTH, vous pouvez facilement créer et gérer des données textuelles :
SELECT CONCAT(first_name, ' ', last_name) AS full_name, LENGTH(first_name) AS name_length
FROM employees;Pour le temporal, rien de plus simple que DATEDIFF : pour savoir combien de jours un employé a passé dans l’entreprise, par exemple :
SELECT name, hire_date, DATEDIFF(CURRENT_DATE, hire_date) AS days_at_company
FROM employees;Pour enrichir les résultats, la clause CASE vous permet de créer des colonnes conditionnelles. Par exemple, pour classer les employés en fonction de leur â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;Et si vous gérez des valeurs manquantes, COALESCE est votre meilleur ami. Il remplace les valeurs NULL par un texte par défaut, comme dans cet exemple :
SELECT name, COALESCE(phone, 'N/A') AS contact_number
FROM customers;Avec cela, même les données imparfaites peuvent devenir précieuses ! Vous pouvez également utiliser les sous-requêtes (subqueries), qui sont des requêtes imbriquées, pour des filtres dynamiques. Par exemple, pour sélectionner les employés dont le salaire dépasse la moyenne :
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);Enfin, les fonctions fenêtres (WINDOW functions) s'invitent à la fête. Elles vous permettent d’effectuer des calculs sur un ensemble de lignes tout en conservant chaque détail. Par exemple, pour donner un rang à chaque employé en fonction de son salaire :
SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;Voilà un aperçu des outils à votre disposition pour jongler avec vos données et transformer des pièces brutes en un chef-d'œuvre d'informations. Maîtriser ces compétences va faire de vous un analyste précieux, prêt à dénicher des insights complexes. Pour approfondir ces techniques, n'hésitez pas à consulter ce lien ici.
Pourquoi maîtriser ces requêtes SQL est indispensable au data analyst ?
Maîtriser ces requêtes SQL est la clé pour que tout data analyst transforme efficacement des données brutes en informations exploitables. De la sélection basique à la transformation avancée via jointures, agrégations, conditions et fonctions fenêtres, ces compétences garantissent des analyses précises, rapides et évolutives. En gagnant en efficacité, les analystes peuvent mieux guider leurs décisions business et répondre aux besoins métiers sans dépendre d’intermédiaires techniques. La puissance de SQL, bien utilisée, est un levier incontournable pour rendre la data intelligible et utile.
FAQ
Qu’est-ce que la commande SELECT en SQL ?
Quelle différence entre WHERE et HAVING ?
À quoi servent les jointures (JOIN) en SQL ?
Quand utiliser les fonctions fenêtres (window functions) ?
Comment gérer les valeurs manquantes en SQL ?
A propos de l'auteur
Franck Scandolera, expert en Data Engineering et Analytics, fort de plus de 10 ans d’expérience à accompagner entreprises et agences digitales, partage ici son savoir-faire. Responsable de formations Analytics et consultant indépendant, il maîtrise SQL, automatisation no-code et infrastructures data complexes. Sa compétence terrain en tracking, modélisation et exploitation data fait de lui un formateur reconnu à l’approche pragmatique et centrée utilisateur.
⭐ 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.
