Published on

January 25, 2015

Utilisation de la clause GROUP BY pour résumer les données dans SQL Server

Lorsque vous travaillez avec de grands ensembles de données dans SQL Server, il peut être utile de résumer les données pour obtenir une vue d’ensemble des informations. La clause GROUP BY dans SQL Server permet d’agréger les données en fonction de critères spécifiques. Dans cet article, nous explorerons comment utiliser la clause GROUP BY pour résumer vos données.

GROUP BY en utilisant une seule colonne

La clause GROUP BY vous permet de regrouper les données en fonction d’une seule colonne. Par exemple, supposons que nous ayons une table nommée SalesOrderDetail dans la base de données AdventureWorks2012, et que nous voulions regrouper les données en fonction de la colonne CarrierTrackingNumber. Nous pouvons utiliser la requête suivante :

USE AdventureWorks2012;
GO
SELECT CarrierTrackingNumber, SUM(LineTotal) AS SummarizedLineTotal
FROM SalesOrderDetail
GROUP BY CarrierTrackingNumber;

Cette requête renverra un ensemble de résultats résumé, où chaque ligne représente un CarrierTrackingNumber unique et la somme correspondante des valeurs LineTotal. Cela peut être utile pour analyser les données de vente ou tout autre type de données pouvant être regroupées en fonction d’une seule colonne.

Regroupement par plusieurs colonnes

Il arrive parfois que vous souhaitiez regrouper vos données par plus d’une colonne. Par exemple, supposons que nous ayons deux tables nommées SalesOrderDetail et SalesOrderHeader dans la base de données AdventureWorks2012, et que nous voulions regrouper les données en fonction à la fois des colonnes ProductID et OrderDate. Nous pouvons utiliser la requête suivante :

SELECT D.ProductID, H.OrderDate, SUM(LineTotal) AS SummarizedLineTotal
FROM SalesOrderDetail D
JOIN SalesOrderHeader H ON D.SalesOrderId = H.SalesOrderID
GROUP BY ProductID, OrderDate;

Cette requête renverra un ensemble de résultats résumé, où chaque ligne représente une combinaison unique de ProductID et OrderDate, et la somme correspondante des valeurs LineTotal. Cela peut être utile pour analyser les données de vente ou tout autre type de données pouvant être regroupées en fonction de plusieurs colonnes.

Regroupement de données contenant des valeurs NULL

Lorsque vous regroupez des données contenant des valeurs NULL, SQL Server traite toutes les valeurs NULL de la même manière. Par exemple, supposons que nous ayons une table nommée NullGroupBy avec une colonne OrderDate contenant des valeurs NULL. Nous pouvons utiliser la requête suivante pour regrouper les données :

CREATE TABLE NullGroupBy (OrderDate date, Amount Int);
INSERT INTO NullGroupBy VALUES (NULL,100), ('10-30-2014',100), ('10-31-2014',100), (NULL,100);

SELECT OrderDate, SUM(Amount) as TotalAmount
FROM NullGroupBy
GROUP BY OrderDate;

Cette requête renverra un ensemble de résultats résumé, où les valeurs NULL de la colonne OrderDate sont traitées de la même manière et regroupées dans une seule ligne. Ce comportement peut être utile lors de la manipulation de données manquantes ou inconnues.

Utilisation d’une expression dans la clause GROUP BY

Parfois, vous souhaiterez regrouper les données en fonction d’une expression plutôt que d’une colonne spécifique. SQL Server vous permet de spécifier une expression dans la clause GROUP BY. Par exemple, supposons que nous voulions regrouper les données de vente par année et mois de la colonne OrderDate. Nous pouvons utiliser la requête suivante :

SELECT CONVERT(CHAR(7), H.OrderDate, 120) AS [YYYY-MM], SUM(LineTotal) AS SummarizedLineTotal
FROM SalesOrderDetail D
JOIN SalesOrderHeader H ON D.SalesOrderId = H.SalesOrderID
GROUP BY CONVERT(CHAR(7), H.OrderDate, 120)
ORDER BY SummarizedLineTotal DESC;

Cette requête regroupera les données en fonction de l’année et du mois de la colonne OrderDate, en utilisant la fonction CONVERT pour extraire la partie YYYY-MM de la date. Cela peut être utile pour analyser les données dans le temps.

Filtrage des données à l’aide de la clause HAVING

En plus de la clause GROUP BY, SQL Server fournit la clause HAVING pour filtrer les données agrégées. La clause HAVING vous permet de spécifier une condition qui doit être satisfaite par les valeurs agrégées. Par exemple, supposons que nous voulions filtrer les données de vente précédemment regroupées pour inclure uniquement les lignes où la somme de LineTotal est supérieure à 200 000. Nous pouvons utiliser la requête suivante :

SELECT D.ProductID, H.OrderDate, SUM(LineTotal) AS SummarizedLineTotal
FROM SalesOrderDetail D
JOIN SalesOrderHeader H ON D.SalesOrderId = H.SalesOrderID
GROUP BY ProductID, OrderDate
HAVING SUM(LineTotal) > 200000
ORDER BY SummarizedLineTotal DESC;

Cette requête renverra un ensemble de résultats résumé, où seules les lignes qui satisfont la condition spécifiée dans la clause HAVING sont incluses. Cela peut être utile pour filtrer les données qui ne répondent pas à certains critères.

Résumé

La clause GROUP BY dans SQL Server est un outil puissant pour résumer les données. Elle vous permet de regrouper les données en fonction d’une ou plusieurs colonnes, et offre des options pour filtrer et trier les résultats agrégés. En comprenant comment utiliser efficacement la clause GROUP BY, vous pouvez obtenir des informations précieuses à partir de vos données.

En espérant que cet article vous ait donné une compréhension claire de l’utilisation de la clause GROUP BY pour résumer les données dans SQL Server. Que vous analysiez des données de vente, des données financières ou tout autre type de données, la clause GROUP BY peut vous aider à obtenir des informations précieuses.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.