Accéder au contenu principal

Sous-requête SQL : Un guide complet

Découvrez comment maîtriser les sous-requêtes SQL pour améliorer vos requêtes de base de données. Découvrez les sous-requêtes corrélées, non corrélées et récursives. Apprenez à connaître l'ordre d'exécution et à combiner les sous-requêtes SQL avec d'autres fonctions SQL.
Actualisé 16 janv. 2025  · 8 min de lecture

Les sous-requêtes SQL sont un outil puissant dans la gestion des bases de données, permettant une extraction plus complexe et plus efficace des données. Ce guide vous guidera à travers les principes fondamentaux des sous-requêtes SQL et vous donnera un aperçu de leurs applications pratiques et de leurs techniques avancées. Que vous soyez débutant ou professionnel expérimenté, la maîtrise des sous-requêtes peut considérablement améliorer vos compétences en SQL.

Pour ceux qui ne connaissent pas SQL, commencez par notre cours SQL intermédiaire afin de construire une base solide. De plus, je trouve que l' aide-mémoire SQL Basics, que vous pouvez télécharger, est une référence utile car il contient toutes les fonctions SQL les plus courantes. Enfin, je tiens à dire que les sous-requêtes sont un moyen courant de répondre aux questions d'entretien en SQL. question d'entretien SQL, donc si vous vous préparez à un entretien, vous êtes au bon endroit pour une révision.

Qu'est-ce qu'une sous-requête SQL ?

Une sous-requête permet aux requêtes SQL d'être plus modulaires en traitant des tâches qui nécessiteraient autrement plusieurs requêtes distinctes.

Définition et objectif

Une sous-requête SQL est une requête imbriquée dans une autre requête SQL, utilisée pour effectuer des opérations nécessitant plusieurs étapes ou une logique complexe. Le rôle des sous-requêtes dans SQL est notamment le suivant :

  • Filtrage des enregistrements sur la base de données provenant de tableaux connexes.
  • Agréger des données et effectuer des calculs de manière dynamique.
  • Recouper les données entre les tableaux pour obtenir des informations spécifiques.
  • Sélection conditionnelle des lignes sans nécessiter de jointures explicites ou de code logique externe.

Cela peut sembler beaucoup, mais cela prendra tout son sens au fur et à mesure que nous explorerons ces aspects dans le didacticiel.

Types de sous-requêtes

Vous serez peut-être surpris d'apprendre qu'il existe différents types de sous-requêtes. Les différents types sont regroupés en fonction des différents types de besoins en matière de recherche de données et sont adaptés à ceux-ci. Vous pouvez choisir parmi les sous-requêtes suivantes en fonction de l'opération que vous souhaitez effectuer :

Sous-requêtes scalaires

Les sous-requêtes scalaires renvoient une seule valeur, par exemple une ligne et une colonne. Ils sont souvent utilisés lorsqu'une seule valeur est attendue, par exemple dans les calculs, les comparaisons ou les affectations dans les clauses SELECT ou WHERE.

Dans l'exemple ci-dessous, la sous-requête scalaire (SELECT AVG(salary) FROM employees) renvoie une seule valeur, le salaire moyen, et la compare au salaire de chaque employé.

-- Example of Scalar Subquery 
-- Compares each salary to the average salary
SELECT employee_name, 
       salary,
       (SELECT AVG(salary) FROM employees) AS average_salary 
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

Sous-requêtes sur les colonnes

Les sous-requêtes de colonnes renvoient une seule colonne mais plusieurs lignes. Ces sous-requêtes sont souvent utilisées avec des opérateurs tels que IN ou ANY, où la requête externe compare les valeurs de plusieurs lignes.

Par exemple, la sous-requête ci-dessous renvoie une liste d'identifiants de départements situés à New York, que la requête principale utilise ensuite pour filtrer les employés de ces départements.

-- Example of Column Subquery 
-- Filters based on departments in New York
SELECT employee_name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');

Sous-requêtes de ligne

Les sous-requêtes de ligne renvoient une seule ligne contenant plusieurs colonnes. Ces sous-requêtes sont généralement utilisées avec des opérateurs de comparaison qui peuvent comparer une ligne de données, tels que les opérateurs = ou IN, lorsque plusieurs valeurs sont attendues.

La sous-requête suivante récupère le service et l'intitulé du poste d'un responsable, et la requête externe recherche les employés dont les valeurs correspondent.

-- Example of Row Subquery 
-- Matches department and job title with a specific manager
SELECT employee_name
FROM employees
WHERE (department_id, job_title) = (SELECT department_id, job_title FROM managers WHERE manager_id = 1);

Sous-requêtes de tableaux (tableaux dérivés)

Les sous-requêtes de tableaux, ou tableaux dérivés, renvoient un tableau complet composé de plusieurs lignes et colonnes. Ces tableaux sont généralement utilisés dans la clause FROM en tant que tableau temporaire dans une requête.

Par exemple, la sous-requête ci-dessous crée un tableau dérivé des salaires moyens par département, qui est ensuite utilisé dans la requête externe pour trouver les départements dont le salaire moyen est supérieur à un seuil spécifié.

-- Example of Table Subquery 
-- Uses derived table for average department salary comparison
SELECT dept_avg.department_id, dept_avg.avg_salary
FROM 
    (SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id) AS dept_avg
WHERE dept_avg.avg_salary > 50000;

Comprendre les sous-requêtes SQL

Dans les exemples ci-dessus, nous avons vu qu'une sous-requête est placée entre parenthèses. Explorons maintenant les mécanismes d'une sous-requête, y compris sa syntaxe et son ordre d'exécution.

Syntaxe et structure

La syntaxe d'une sous-requête varie en fonction de l'endroit où elle est utilisée dans l'instruction SQL principale, par exemple dans les clauses SELECT, FROM ou WHERE. Les sous-requêtes sont généralement placées entre parenthèses à l'adresse ( ), ce qui indique qu'il s'agit d'une requête distincte. 

L'exemple suivant montre une sous-requête dans une clause WHERE, ce qui nous permet de filtrer les données de la requête principale sur la base des résultats d'une requête imbriquée. 

-- Selects the main column to retrieve from the main table to query
SELECT column_name
FROM table_name
-- Applies a condition to filter rows based on the subquery result
WHERE column_name operator 
      -- Subquery retrieves data for comparison in the WHERE clause
      (SELECT column_name FROM table_name WHERE condition);  

Ordre d'exécution

L'ordre d'exécution des sous-requêtes dépend de leur corrélation ou de leur non-corrélation.

Sous-requêtes non corrélées

Les sous-requêtes non corrélées sont indépendantes de la requête externe et s'exécutent en premier. Le résultat de la sous-requête est ensuite transmis à la requête externe. Les sous-requêtes non corrélées sont généralement utilisées pour les calculs et les filtres scalaires ou au niveau des colonnes.

La requête ci-dessous suit l'ordre d'exécution :

  • La sous-requête (SELECT AVG(salary) FROM employees) est exécutée en premier et calcule le salaire moyen.

  • La requête externe permet alors de retrouver les salariés dont le salaire est supérieur à cette moyenne.

-- Retrieves names of employees with above-average salary
SELECT employee_name  
FROM employees
-- Subquery: calculates average salary across all employees
WHERE salary > (SELECT AVG(salary) FROM employees);  

Je vous recommande de suivre le cours Introduction à SQL Server de DataCamp pour en savoir plus sur le regroupement et l'agrégation de données, ainsi que sur la jonction de tableaux.

Sous-requêtes corrélées

Les sous-requêtes corrélées dépendent de la requête externe pour certaines de leurs données, elles sont donc réévaluées pour chaque ligne traitée par la requête externe. 

La requête suivante s'exécute dans cet ordre :

  • Pour chaque ligne de employees (alias e1), la sous-requête (SELECT AVG(e2.salary) FROM employees e2 WHERE e2.department_id = e1.department_id) calcule le salaire moyen pour ce département spécifique.

  • La requête externe compare ensuite le salaire de chaque employé avec le salaire moyen du département et n'inclut que ceux qui gagnent plus.

-- Retrieves names of employees with above-average salary in their department
SELECT e1.employee_name  
FROM employees e1
 -- Subquery: calculates average salary for each department
WHERE e1.salary > (SELECT AVG(e2.salary) FROM employees e2 WHERE e2.department_id = e1.department_id); 

Applications de la sous-requête SQL

Les sous-requêtes SQL sont importantes pour la récupération et la transformation des données. Elles vous permettent d'écrire des requêtes complexes et de traiter des tâches d'analyse de données avancées. Vous trouverez ci-dessous des applications concrètes des sous-requêtes dans la gestion des bases de données.

Filtrage des données

Les sous-requêtes sont utiles pour filtrer les données en fonction de conditions dynamiques, en particulier lorsque le filtrage nécessite de comparer des valeurs dans plusieurs tableaux ou d'effectuer des calculs.

La sous-requête suivante permet de retrouver le site category_id du "Produit A", et la requête principale permet de retrouver tous les produits de cette catégorie.

-- Retrieves names of products in the same category as 'Product A'
SELECT product_name  
FROM products
 -- Subquery: finds category ID of 'Product A'
WHERE category_id = (SELECT category_id FROM products WHERE product_name = 'Product A'); 

Agrégation de données

Les sous-requêtes sont également utilisées pour l'agrégation de données, en particulier lors de la génération de statistiques sommaires ou d'informations pour l'établissement de rapports et l'analyse. La sous-requête (SELECT department_id, AVG(sales) AS avg_sales FROM sales GROUP BY department_id) calcule les ventes moyennes par département. La requête externe filtre ensuite les départements dont le chiffre d'affaires moyen est supérieur à 50 000. 

-- Retrieves department IDs and their average sales
-- Filters for departments with average sales over 50,000
SELECT department_id, avg_sales  
FROM (SELECT department_id, AVG(sales) AS avg_sales FROM sales GROUP BY department_id) AS dept_sales  -- Subquery: calculates average sales per department
WHERE avg_sales > 50000;  

Considérations sur les performances et meilleures pratiques

Bien que les sous-requêtes soient puissantes lors de l'écriture de requêtes complexes, elles peuvent avoir un impact sur les performances, en particulier lorsque vous travaillez avec de grands ensembles de données. Il est important de tenir compte des pièges les plus courants et des meilleures pratiques pour améliorer les performances.

Optimiser les performances des sous-requêtes

L'optimisation des performances des sous-requêtes permet d'améliorer le temps d'exécution des requêtes et la réactivité de la base de données. Vous trouverez ci-dessous des moyens d'optimiser la sous-requête.

  • Index Colonnes pertinentes : Pour accélérer la recherche de données, veillez à ce que les colonnes utilisées dans les clauses WHERE et JOIN et les opérations de comparaison soient indexées.

  • Limitez l'utilisation de sous-requêtes corrélées : Dans la mesure du possible, utilisez des opérations JOIN ou des CTE au lieu de sous-requêtes corrélées, car elles permettent souvent de traiter les données plus rapidement en utilisant des opérations d'ensemble plutôt qu'un traitement ligne par ligne.

  • Limiter le nombre de colonnes dans les sous-requêtes : Ne sélectionnez que les colonnes dont vous avez besoin dans les sous-requêtes afin de minimiser la récupération des données, de réduire l'utilisation de la mémoire et de permettre à la base de données d'optimiser l'exécution.

  • Utilisez EXISTS au lieu de IN : Si une sous-requête renvoie un grand ensemble de données, l'utilisation de EXISTS au lieu de IN peut améliorer les performances. L'opérateur EXISTS interrompt le traitement de la requête lorsqu'il trouve une ligne correspondante, tandis que l'opérateur IN continue d'évaluer l'ensemble du résultat de la sous-requête.

Éviter les pièges les plus courants

Lorsque vous écrivez des sous-requêtes de manière incorrecte, vous pouvez rencontrer des problèmes lors de leur exécution. Voyons comment éviter ces pièges.

  • Évitez les sous-requêtes corrélées inutiles : Les sous-requêtes corrélées sont gourmandes en ressources ; évitez donc de les utiliser lorsque le résultat peut être obtenu avec une sous-requête non corrélée ou une jointure.

  • Attention aux valeurs NULL dans les sous-requêtes : les valeurs NULL peuvent conduire à des résultats inattendus, en particulier dans les sous-requêtes qui utilisent des opérateurs de comparaison tels que IN ou =. Pour éviter les erreurs, envisagez d'utiliser COALESCE pour gérer les nullités ou assurez-vous que les colonnes ne sont pas nullables si elles sont utilisées pour des comparaisons.

  • Évitez d'utiliser SELECT * dans les sous-requêtes : L'utilisation de SELECT * peut s'avérer inefficace, car elle récupère toutes les colonnes, même si vous n'en avez pas besoin. Cela augmente l'utilisation de la mémoire et peut ralentir l'exécution des requêtes, en particulier pour les grands ensembles de données.

  • Utilisez des alias pertinents : Nommez clairement vos tableaux et vos sous-requêtes pour améliorer la lisibilité.

Essayez notre cursus de développeur SQL Server, qui vous permettra d'acquérir les compétences nécessaires pour écrire, dépanner et optimiser vos requêtes à l'aide de SQL Server. 

Techniques plus avancées de sous-requêtes SQL

Si les sous-requêtes constituent un moyen efficace d'écrire des requêtes complexes, il existe des méthodes avancées pour traiter les données hiérarchiques. Examinons les techniques et stratégies avancées d'application des sous-requêtes SQL.

Sous-requêtes récursives

Les sous-requêtes récursives (également connues sous le nom d'expressions récursives de tableau commun ou CTE) vous permettent d'extraire des données hiérarchiques, telles que des structures organisationnelles, des catégories de produits ou des relations graphiques, où chaque élément des données est lié à un autre.

Supposons que vous ayez un tableau employees avec employee_id, manager_id, et employee_name. Vous voulez récupérer la hiérarchie des employés sous un manager spécifique.

WITH RECURSIVE EmployeeHierarchy AS (
    -- Anchor Query: Start with the specified manager
    SELECT employee_id, manager_id, employee_name, 1 AS level
    FROM employees
 -- Assuming the top-level manager has NULL as manager_id
    WHERE manager_id IS NULL 
    
    UNION ALL
    
    -- Recursive Query: Find employees who report to those in the previous level
    SELECT e.employee_id, e.manager_id, e.employee_name, eh.level + 1
    FROM employees e
    INNER JOIN EmployeeHierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM EmployeeHierarchy;

Dans la requête ci-dessus :

  • Ce que j'appelle la requête d'ancrage sélectionne le gestionnaire de premier niveau (où manager_id est NULL).

  • La requête récursive associe employees à l'ETC lui-même (EmployeeHierarchy), ce qui permet de trouver les salariés qui dépendent de chaque salarié précédemment recherché.

  • La récursion se poursuit jusqu'à ce qu'il n'y ait plus d'employés qui se rapportent à ceux qui ont été trouvés.

Combiner les sous-requêtes avec d'autres fonctionnalités SQL

Vous pouvez intégrer les sous-requêtes à d'autres fonctions SQL telles que les fonctions de fenêtre, les instructions CASE et les fonctions de regroupement. Ces combinaisons permettent une manipulation avancée des données et l'établissement de rapports plus complets.

Combinaison de sous-requêtes avec des fonctions de fenêtre

Les sous-requêtes peuvent être utilisées pour affiner l'ensemble de données sur lequel les fonctions de fenêtre agissent, ce qui les rend utiles pour le classement, les totaux cumulés et les moyennes mobiles. Supposons que vous souhaitiez classer les produits en fonction des ventes réalisées dans chaque région. Vous pouvez utiliser une sous-requête pour sélectionner les données pertinentes, puis appliquer une fonction de fenêtre pour le classement.

 -- Ranks products by sales within each region
SELECT region, product_id, sales, 
       RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS sales_rank 
-- Subquery: calculates total sales per product in each region
FROM (SELECT region, product_id, SUM(sales) AS sales  
      FROM sales_data
      GROUP BY region, product_id) AS regional_sales;

Utilisation de sous-requêtes avec les instructions CASE

La combinaison de sous-requêtes avec les instructions CASE peut vous aider à appliquer des conditions complexes basées sur des calculs dynamiques. La requête suivante permet de classer les produits dans les catégories "élevé", "moyen" ou "faible" en fonction de leur chiffre d'affaires par rapport au chiffre d'affaires moyen de leur catégorie.

 -- Categorize above-average sales, average sales, and below-average sales
SELECT product_id, category_id, sales,
       CASE 
           WHEN sales > (SELECT AVG(sales) FROM products WHERE category_id = p.category_id) THEN 'High' 
           WHEN sales = (SELECT AVG(sales) FROM products WHERE category_id = p.category_id) THEN 'Medium' 
           ELSE 'Low'
       END AS performance
FROM products AS p;

Sous-requêtes avec fonctions d'agrégation pour l'agrégation conditionnelle

Vous pouvez également calculer des agrégats conditionnels en utilisant des sous-requêtes dans les fonctions d'agrégat. Supposons que vous souhaitiez calculer le revenu total généré uniquement par les clients actifs. Dans l'exemple ci-dessous, la sous-requête récupère tous les clients actifs. La requête principale filtre ensuite les commandes pour n'inclure que celles passées par des clients actifs, en calculant le revenu total de ce groupe.

 -- Calculates total revenue from active customers
SELECT SUM(order_total) AS active_customer_revenue 
FROM orders
  -- Subquery: retrieves IDs of active customers
WHERE customer_id IN (
    SELECT customer_id
    FROM customers
    WHERE status = 'Active'
);

Utilisation des sous-requêtes SQL

Les sous-requêtes SQL offrent des applications polyvalentes pour l'analyse des données, c'est pourquoi elles sont si souvent utilisées. Vous trouverez ci-dessous quelques applications mathématiques ou spécifiques à l'industrie des sous-requêtes SQL. Pour trouver ces idées, j'ai essayé de penser à des travaux d'analyse ou d'ingénierie de données qui nécessitent plusieurs étapes, et c'est là, à mon avis, que les sous-requêtes sont vraiment utiles.

Exemples spécifiques à l'industrie

Les sous-requêtes peuvent offrir des solutions utiles dans les secteurs de la finance, de la santé et du commerce de détail. Voici quelques idées :

  • Évaluation des risques pour l'approbation des prêts (Finance) : J'imagine les banques en train de jongler avec des paramètres tels que les ratios dette/revenu et les scores de crédit. En imbriquant ces mesures dans des sous-requêtes, les analystes peuvent mieux comprendre les mesures financières complexes. Une sous-requête peut, par exemple, calculer le montant moyen du prêt pour les clients se situant dans des tranches de revenus spécifiques.

  • Identifier des modèles dans les diagnostics des patients (soins de santé) : Dans le secteur des soins de santé, la gestion des données des patients peut s'avérer une lourde tâche. Les sous-requêtes peuvent contribuer à réduire cette complexité. J'imagine utiliser des sous-requêtes pour suivre la fréquence des diagnostics dans différents groupes d'âge ou facteurs de risque.

  • Optimisation du placement des produits en fonction de l'historique des achats (commerce de détail) : Les détaillants s'efforcent de comprendre les habitudes d'achat. Les sous-requêtes peuvent afficher des données d'achat imbriquées afin d'identifier les produits qui sont souvent achetés ensemble. Cela peut aider à placer stratégiquement des articles complémentaires et à stimuler les ventes.

Connexions mathématiques

Les sous-requêtes sont également utilisées pour identifier des modèles et des tendances de données dans des connexions mathématiques et logiques. Voici quelques exemples d'applications des sous-requêtes en mathématiques.

  • Moyennes mobiles pour l'analyse des séries temporelles : Lors de l'analyse des tendances dans le temps, les sous-requêtes simplifient le calcul des moyennes mobiles. Je les vois définir des fenêtres temporelles spécifiques dans des requêtes imbriquées, ce qui facilite le lissage des données et l'identification des tendances.

  • Détection des valeurs aberrantes à l'aide des écarts types : Le repérage des valeurs aberrantes est important pour de nombreuses choses, notamment pour la détection des fraudes. Les sous-requêtes permettent de calculer facilement des mesures telles que les écarts types dans le cadre de requêtes imbriquées.

  • Utilisation des concepts de la théorie des ensembles : Je trouve intéressante la façon dont les sous-requêtes reflètent les opérations de la théorie des ensembles comme UNION et INTERSECT. Cette capacité est idéale pour des tâches telles que l'analyse de la fidélisation de la clientèle, où la compréhension des chevauchements et des différences entre les groupes de clients permet d'élaborer des stratégies de marketing plus intelligentes.

Conclusion

La maîtrise des sous-requêtes SQL peut considérablement améliorer votre capacité à gérer et à analyser les données de manière efficace. En comprenant leur structure, leurs applications et les meilleures pratiques, vous pouvez optimiser vos requêtes SQL pour de meilleures performances. Je tiens également à préciser que la maîtrise des sous-requêtes facilite l'écriture du langage SQL, et qu'il vaut donc la peine de l'apprendre.

Si vous souhaitez devenir un analyste de données compétent, consultez notre cursus d'analyste de données associé en SQL pour acquérir les compétences nécessaires. Le cours Reporting in SQL est également approprié si vous souhaitez apprendre à construire des tableaux de bord professionnels à l'aide de SQL. Enfin, je vous recommande d'obtenir la certification SQL Associate pour démontrer votre maîtrise de l'utilisation de SQL pour l'analyse des données et vous démarquer parmi les autres professionnels des données.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Je crée des articles qui simplifient la science des données et l'analyse, en les rendant faciles à comprendre et accessibles.

FAQ sur les sous-requêtes SQL

Qu'est-ce qu'une sous-requête SQL ?

Une sous-requête SQL est une requête imbriquée dans une autre requête SQL, utilisée pour effectuer des opérations nécessitant plusieurs étapes ou une logique complexe.

Comment utiliser une sous-requête en SQL ?

Les sous-requêtes sont utilisées dans les instructions SQL pour filtrer les données, effectuer des calculs ou récupérer des informations spécifiques en fonction de conditions complexes.

Quels sont les types de sous-requêtes en SQL ?

Les sous-requêtes SQL peuvent être classées en sous-requêtes scalaires, de colonnes, de lignes et de tableaux, chacune servant à des fins différentes dans la recherche de données.

Quelle est la différence entre une sous-requête et une jointure ?

Une sous-requête est une requête imbriquée utilisée pour des opérations complexes, tandis qu'une jointure combine les lignes de deux tableaux ou plus sur la base de colonnes apparentées.

Comment les sous-requêtes peuvent-elles améliorer les performances des requêtes SQL ?

Les sous-requêtes permettent de rationaliser les requêtes complexes en les divisant en parties plus petites et plus faciles à gérer, ce qui peut améliorer les performances si elles sont utilisées correctement.

Sujets

Apprenez SQL avec DataCamp

Certification disponible

cours

Introduction à SQL

2 hr
976.2K
Apprenez à créer et à interroger des bases de données relationnelles à l'aide de SQL en seulement deux heures.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus