Retour à la liste des articles Articles
15 minutes de lecture

Fonctions agrégées SQL : Un guide complet pour les débutants

Vous êtes curieux de connaître les fonctions d'agrégation SQL et leur application à des scénarios réels ? Dans cet article, nous allons explorer les fonctions d'agrégation SQL, présenter des exemples concrets et offrir des conseils précieux sur la façon de les maîtriser.

L'agrégation de données consiste à prendre plusieurs lignes de données et à les condenser en un seul résultat ou résumé. Lorsqu'il s'agit d'ensembles de données volumineux, ce procédé est inestimable car il permet d'extraire des informations pertinentes sans avoir à examiner minutieusement chaque point de données.

Qu'est-ce que les fonctions agrégées SQL ? Il s'agit de fonctions spécialisées qui effectuent des calculs sur des groupes de variables et renvoient un résultat unique. Contrairement aux fonctions traditionnelles, les fonctions agrégées travaillent sur des groupes de lignes de données. Cela vous permet de calculer efficacement des statistiques ou de générer des informations récapitulatives à partir d'un ensemble de données.

Dans cet article, nous examinerons l'importance des fonctions agrégées SQL et la manière de les utiliser. Nous les expliquerons à l'aide d'exemples concrets. Cela semble intéressant, n'est-ce pas ? Alors consultez notre cours sur Fonctions SQL standards. C'est un excellent point de départ pour apprendre à traiter les données à l'aide des fonctions SQL les plus utilisées !

Exploration des fonctions agrégées SQL courantes

Dans le monde de SQL, les fonctions agrégées sont des outils essentiels pour résumer et analyser efficacement les données. Elles ont la capacité unique de distiller de grands ensembles de données en informations significatives, de faciliter l'analyse statistique et de simplifier les structures de données complexes.

Les fonctions agrégées SQL les plus fréquemment utilisées sont les suivantes :

  • SUM()
  • COUNT()
  • AVG()
  • MIN()
  • MAX()

Examinons chacune d'entre elles ci-dessous.

1. SUM()

La fonction SUM() renvoie le total d'une colonne numérique. Elle est généralement utilisée lorsque vous devez trouver le total de valeurs telles que le revenu des ventes, les quantités ou les dépenses.

Imaginez que vous souhaitiez connaître le revenu total des ventes de votre entreprise ; vous pouvez le faire en exécutant la requête suivante :

SELECT SUM(sales_amount) as total_revenue
FROM sales_data;

2. COUNT()

La fonction COUNT() vient ensuite. L'objectif de cette fonction est de compter le nombre de lignes d'un tableau ou le nombre de valeurs non nulles dans une colonne.

Supposons que vous souhaitiez connaître le nombre de produits vendus dans votre magasin ; vous pouvez utiliser la requête suivante :

SELECT COUNT(*) as total_products
FROM products;

Dans cette requête, nous utilisons l'astérisque (*) pour indiquer toutes les colonnes. Et nous comptons toutes les lignes de la requête.

3. AVG()

Lorsque vous devez calculer la valeur moyenne d'une colonne numérique, vous pouvez utiliser la fonction AVG(). Elle est utile pour rechercher le prix moyen, l'évaluation, les unités vendues, etc. Cette requête, par exemple, serait utile si vous exploitiez un service de diffusion en continu par abonnement et que vous souhaitiez connaître la durée moyenne des sessions des utilisateurs sur votre plateforme :

SELECT AVG(session_duration) as average_session_duration
FROM user_sessions;

4. MIN()

La fonction MIN() renvoie la plus petite valeur d'une colonne. Elle est particulièrement utile pour localiser la valeur la plus faible ou la plus petite d'un ensemble de données.

Prenons l'exemple d'un responsable qui cherche à identifier le temps de réponse le plus rapide à une question posée par un client sur les tickets d'assistance ; la requête suivante peut lui fournir la réponse :

SELECT MIN(response_time) as shortest_response_time
FROM customer_support_tickets;

5. MAX()

En revanche, la fonction MAX() renvoie la valeur la plus élevée d'une colonne. Elle est utile pour déterminer la valeur la plus élevée d'un ensemble de données.

Supposons que vous soyez propriétaire d'un site de commerce électronique et que vous souhaitiez connaître la valeur de la commande la plus élevée passée par un client dans votre boutique en ligne. Voici la requête que vous écrirez :

SELECT MAX(order_value) as max_order_value
FROM customer_orders;

Pour plus d'exemples des fonctions MIN() et MAX(), consultez les fonctions SQL MIN() et MAX() expliquées.

Agrégation de données en SQL

Maintenant que nous avons examiné certaines des fonctions d'agrégation SQL les plus utilisées, examinons de plus près le concept d'agrégation de données en SQL.

L'agrégation de données est une technique puissante pour résumer et analyser les informations d'un ensemble de données. Elle vous permet d'obtenir des informations utiles en effectuant des calculs sur des groupes de données liées, ce qui vous dispense de l'inspection fastidieuse des enregistrements individuels.

Pour rendre ce concept plus concret, examinons les cas d'utilisation suivants :

  • Ventes : Pour un propriétaire de magasin, il est essentiel de comprendre comment les différentes catégories de produits contribuent aux ventes totales. Vous pouvez déterminer quelle catégorie de produits est la plus rentable en regroupant les données de vente de chaque catégorie de produits.
  • Notes des élèves: Si vous êtes enseignant, vous voudrez peut-être connaître la note moyenne de chaque matière dans votre classe. En regroupant les données relatives aux notes des élèves, vous pouvez déterminer les moyennes par matière et identifier les points à améliorer.
  • Trafic sur le site web : Supposons que vous gériez un site web et que vous souhaitiez savoir quelles sont les pages les plus fréquentées. Vous pouvez trouver les pages les plus populaires et gérer les ressources plus efficacement en regroupant les statistiques de trafic du site web.
  • Salaires des employés: Imaginez que vous êtes responsable des ressources humaines dans une entreprise et que vous souhaitez connaître les salaires pratiqués dans les différents services. SQL peut vous aider à agréger et à analyser les données de chaque service.

Exploiter la puissance des fonctions agrégées SQL avec GROUP BY

Dans la plupart des cas, l'utilisation des fonctions d'agrégation de SQL implique l'utilisation de la clause GROUP BY. Cette puissante combinaison vous permet d'exécuter des calculs agrégés sur des groupes spécifiques de données dans votre ensemble de données.

La clause SQL GROUP BY sépare votre ensemble de données en groupes sur la base de valeurs correspondantes dans une ou plusieurs colonnes, ce qui vous permet d'appliquer des fonctions d'agrégation à chaque groupe indépendamment. Vous trouverez ci-dessous un aperçu de la syntaxe GROUP BY:

SELECT 
  column1, 
  column2, 
  aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

Dans cette requête, les données dont les valeurs correspondent dans column1 et column2 deviennent les groupes ; aggregate_function(column3) est la fonction d'agrégation que vous souhaitez appliquer aux valeurs de column3 dans chaque groupe. Voyons quelques exemples.

Exemple 1 : regroupement par ville et calcul du salaire moyen

Imaginez que vous disposiez d'une base de données d'employés contenant des informations sur les noms, les villes et les salaires des employés. Votre objectif est de déterminer le salaire moyen dans chaque ville. Vous pouvez le faire avec la requête suivante :

SELECT 
  city, 
  AVG(salary) as average_salary
FROM employee_data
GROUP BY city;

Décomposons maintenant la requête étape par étape :

Étape 1 : Regroupement par ville

La base de données commence le processus en organisant les employés en groupes en fonction de leur ville de résidence. Chaque groupe de villes est représenté visuellement ci-dessous par une couleur différente :

  • Groupe 1 : New York (jaune)
  • Groupe 2 : San Francisco (rouge)
  • Groupe 3 : Los Angeles (vert)
employee_namecitysalary
JohnNew York60000
JaneNew York55000
BobSan Francisco70000
AliceSan Francisco72000
MikeLos Angeles62000
EmilyLos Angeles64000

Étape 2 : Calcul des salaires moyens

Dans chaque groupe de villes, la base de données calcule le salaire moyen en appliquant la fonction d'agrégation AVG() à la colonne salary.

Résultat final :

Cette requête SQL permet d'obtenir le salaire moyen pour chaque ville, comme illustré ci-dessous. L'exécution de cette requête fournit des informations précieuses sur les tendances et les disparités en matière de rémunération dans les villes où résident vos employés. Ces informations peuvent être utiles pour prendre des décisions éclairées concernant les ajustements de salaire, les considérations relatives au coût de la vie, etc.

cityaverage_sale
New York57500
San Francisco71000
Los Angeles63000

Exemple 2 : Regroupement par catégorie de produits et calcul du chiffre d'affaires total

Supposons que vous disposiez d'un ensemble de données de ventes comprenant des catégories de produits et des quantités vendues. Votre objectif est de déterminer les ventes totales pour chaque catégorie de produits. Voici la requête :

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category;

Cette requête regroupe les données de vente par catégorie de produits et calcule les montants totaux des ventes pour chaque groupe. Elle fournit des informations utiles sur les catégories de produits les plus rentables. Vous trouverez d'autres exemples de cette combinaison dans Comment utiliser SUM() avec GROUP BY : Guide détaillé.

Exemple 3 : Regroupement par année et par mois pour compter les commandes

Supposons que vous exploitiez une plateforme de commerce électronique dont la base de données contient les dates de commande. Vous souhaitez connaître le nombre de commandes passées chaque année et chaque mois. La requête suivante permet d'y parvenir :

SELECT 
  EXTRACT(YEAR FROM order_date) as order_year, 
  EXTRACT(MONTH FROM order_date) as order_month, 
  COUNT(*) as order_count
FROM orders
GROUP BY order_year, order_month
ORDER BY order_year, order_month;

Cette requête regroupe les commandes par année et par mois, ce qui permet d'obtenir une chronologie du nombre de commandes. Elle est très utile pour suivre les changements saisonniers et estimer le nombre de commandes mensuelles. Des exemples similaires peuvent être trouvés dans Comment utiliser COUNT() avec GROUP BY.

Dans chacun de ces exemples, la clause GROUP BY divise les données en groupes basés sur certaines colonnes et les fonctions d'agrégation (AVG(), SUM() et COUNT()) exécutent des calculs sur chaque groupe. D'autres exemples peuvent être trouvés dans notre article Utilisation de GROUP BY en SQL.

Exemples concrets d'utilisation des fonctions agrégées SQL

Maintenant que nous avons couvert les principes fondamentaux des fonctions agrégées et de la clause GROUP BY, voyons comment nous pouvons les utiliser dans d'autres exemples du monde réel.

1) Regroupement par catégories de produits pour l'analyse des ventes

Imaginons que vous disposiez d'une base de données commerciale et que vous souhaitiez trouver la date de commande la plus récente pour chaque catégorie de produits. Pour ce faire, nous devons regrouper les données par la colonne product_category et utiliser la fonction MAX() pour sélectionner la date de commande la plus récente (c'est-à-dire la plus importante) :

SELECT 
  product_category, 
  MAX(order_date) as most_recent_order_date
FROM sales_data
GROUP BY product_category;

L'analyse de la date de commande la plus récente pour chaque catégorie de produits permet d'identifier les tendances actuelles du marché et la demande de produits.

2. Analyse des ventes par catégorie de produits et par année

Une analyse plus approfondie peut nécessiter le regroupement des données en plusieurs colonnes. Supposons par exemple que vous ayez besoin de connaître le total des ventes pour chaque catégorie de produit et chaque année. Voici la requête :

SELECT 
  product_category, 
  EXTRACT(YEAR FROM order_date) as sales_year, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category, sales_year;

Cette requête regroupe les données sur deux colonnes, ce qui nous permet d'analyser les ventes à la fois par catégorie de produit et par année et de fournir ainsi des informations plus détaillées et plus précises.

3. Filtrer les catégories de produits ayant des ventes élevées

Il se peut que vous ayez besoin de filtrer des groupes en fonction de la sortie d'une fonction agrégée. Dans ce cas, la clause HAVING est ce qu'il vous faut. Supposons que vous souhaitiez trouver des catégories de produits dont les ventes totales sont supérieures à 10 000 $ :

SELECT 
  product_category, 
  SUM(sales_amount) as total_sales
FROM sales_data
GROUP BY product_category
HAVING SUM(sales_amount) > 10000;

La clause HAVING filtre les résultats groupés en affichant les catégories de produits dont les ventes totales sont supérieures au seuil indiqué.

Il est essentiel de noter que les fonctions d'agrégation ne peuvent pas être utilisées dans la clause WHERE. Les fonctions d'agrégation agissent sur les données qui ont été regroupées à l'aide de la clause GROUP BY, alors que la clause WHERE filtre les lignes individuelles avant qu'elles ne soient regroupées.

4. Comptage des clients uniques

Le comptage des valeurs distinctes dans une colonne est essentiel pour diverses analyses. Par exemple, vous pourriez vouloir trouver le nombre de clients uniques :

SELECT 
  COUNT(DISTINCT customer_id) as unique_customers
FROM sales_data;

Cette requête compte le nombre d'identifiants uniques de clients dans les données de vente, ce qui peut être utile lorsque vous travaillez avec des ensembles de données contenant des doublons.

5. Distinguer les fonctions COUNT() pour obtenir des rapports précis

Il est important de comprendre la différence entre COUNT(*) et COUNT(expression). COUNT(*) compte toutes les lignes d'un groupe, tandis que COUNT(expression) ne compte que les valeurs nonNULL de l'expression fournie au sein d'un groupe. Les valeurs NULL représentent des données manquantes ou inconnues dans un ensemble de données.

Prenons un exemple :

SELECT product_category,
       COUNT(*) as total_orders,
       COUNT(discount) as discounted_orders
FROM sales_data
GROUP BY product_category;

Ici, COUNT(*) compte toutes les commandes dans chaque catégorie de produits, y compris celles qui ont des valeurs NULL dans la colonne des remises. COUNT(discount), en revanche, ne compte que les commandes qui n'ont pas de valeursNULL dans la colonne discount au sein de chaque catégorie. Consultez notre article Quelle est la différence entre COUNT(*), COUNT(1), COUNT(nom de colonne) et COUNT(DISTINCT nom de colonne) ? pour d'autres exemples d'utilisation de la fonction COUNT().

6. Obtenir des informations complètes sur les catégories de produits

SQL vous permet d'utiliser de nombreuses fonctions d'agrégation dans une seule requête afin d'obtenir une image complète de vos données. Par exemple, trouvons les ventes totales, le prix moyen et le prix minimum pour chaque catégorie de produits :

SELECT product_category,
       SUM(sales_amount) as total_sales,
       AVG(product_price) as avg_price,
       MIN(product_price) as min_price
FROM sales_data
GROUP BY product_category;

Cette requête permet d'extraire plusieurs informations de vos données tout en fournissant un résumé concis.

FAQ sur la fonction SQL Aggregate

Pour conclure, abordons quelques questions fréquemment posées sur les fonctions agrégées SQL :

Puis-je utiliser deux fonctions agrégées dans une requête ?

Oui. Comme démontré dans les exemples précédents, vous pouvez utiliser plusieurs fonctions agrégées dans une seule requête SQL. L'utilisation de plusieurs fonctions agrégées permet d'obtenir une vue plus complète de vos données. Par exemple, pour mieux comprendre la répartition des revenus, vous pourriez vouloir calculer non seulement le salaire moyen dans un département, mais aussi les salaires maximum et minimum.

Outre les fonctions d'agrégation générales dont nous avons parlé, les bases de données SQL offrent souvent des fonctions d'agrégation spécialisées adaptées à des besoins spécifiques. Par exemple, SQL Server comprend une fonction STRING_AGG() pour la concaténation de chaînes de caractères au sein d'un groupe. Lorsque l'on travaille sur des projets dont les exigences en matière de traitement des données sont uniques, ces fonctions spécialisées peuvent s'avérer indispensables.

Q. Comment puis-je compter les lignes en utilisant une expression conditionnelle ?

En SQL, les expressions conditionnelles - généralement mises en œuvre avec l'instruction CASE WHEN - peuvent être utilisées pour compter les lignes en fonction de conditions spécifiées. Par exemple, vous pouvez compter le nombre de commandes dont le chiffre d'affaires total est supérieur à 1 000 $ :

SELECT 
  COUNT(CASE WHEN sales_amount > 1000 THEN 1 ELSE NULL END) as high_value_orders
FROM sales_data;

Vous trouverez d'autres exemples de requêtes similaires et d'utilisation avancée des expressions conditionnelles dans notre article Comment utiliser CASE WHEN dans GROUP BY.

Q. Pourquoi les fonctions d'agrégation ne sont-elles pas autorisées dans GROUP BY ?

Les fonctions d'agrégation ne sont pas autorisées dans GROUP BY parce qu'elles opèrent sur des données groupées. GROUP BY est destiné à regrouper les lignes selon certains critères, tandis que les fonctions d'agrégation réduisent les lignes en une seule valeur. Mélanger ces deux types de fonctions serait source d'ambiguïté et rendrait difficile la décision de regrouper et d'agréger correctement les données.

Q. Pourquoi utiliser la clause HAVING avec les fonctions agrégées en SQL ?

Dans les requêtes SQL contenant des fonctions d'agrégation, la clause HAVING est utilisée pour filtrer les résultats en fonction du résultat de la fonction d'agrégation. Elle vous permet d'appliquer des conditions à des groupes de données après qu'ils ont été agrégés. Par exemple, si vous souhaitez obtenir uniquement les départements dont le salaire moyen est égal ou supérieur à 50 000 dollars, vous pouvez utiliser la clause HAVING pour filtrer les résultats groupés en conséquence.

SELECT 
  department,
  AVG(salary) as average_salary
FROM employee_data
GROUP BY department
HAVING AVG(salary) >= 50000;

Q. Comment puis-je en savoir plus sur les fonctions agrégées SQL ?

Pour approfondir votre compréhension des fonctions agrégées SQL et de leurs applications pratiques, vous pouvez suivre des cours en ligne, lire la documentation SQL et vous entraîner avec des ensembles de données réels. Le cours Fonctions SQL standards mentionné plus haut est un excellent point de départ ; il explique l'utilisation des fonctions SQL sur différents types de données et comporte 211 tâches interactives pour vous permettre de vous exercer !

Fonctions agrégées SQL : Libérer les connaissances sur les données

En conclusion, les fonctions agrégées SQL sont des outils puissants pour résumer et évaluer les données dans les bases de données relationnelles. Que vous soyez novice en SQL ou utilisateur expérimenté, savoir utiliser efficacement les fonctions agrégées vous aidera à extraire des informations utiles de vos données, à prendre des décisions fondées sur les données et, en fin de compte, à améliorer les performances de votre entreprise.

Acquérir des compétences en SQL peut vous donner un avantage concurrentiel sur le marché actuel des entreprises axées sur les données. Si vous souhaitez vous plonger dans le langage SQL, je vous recommande notre offre SQLTout à vie . Cette offre contient tous les cours SQL actuels et futurs dans quatre dialectes SQL différents. Voici quelques autres points forts de notre offre :

  • Le SQL de A à Z. Les sept cours et près de 900 exercices de ce programme offrent un parcours d'apprentissage complet pour le langage SQL moderne, des bases aux concepts avancés.
  • La pratique du SQL. Cette piste est destinée à ceux qui recherchent beaucoup de pratique interactive du langage SQL. Elle contient neuf cours interactifs et plus de 800 exercices pratiques - et nous continuons à en ajouter.
  • La pratique du SQL mensuel. Chaque mois, nous publions un nouveau cours de pratique SQL de niveau basique ou avancé.

Bon apprentissage !