Partager via


Composants de la clause GROUP BY

La clause GROUP BY contient les éléments suivants :

  • Une ou plusieurs expressions sans agrégation. Ce sont généralement des références à des colonnes de regroupement.
  • Le mot clé ALL (facultatif) qui indique que tous les groupes produits par la clause GROUP BY sont renvoyés, même si certains d'entre eux ne comportent aucune ligne correspondant aux critères de recherche.
  • CUBE ou ROLLUP.
  • La clause HAVING est habituellement utilisée avec la clause GROUP BY, bien qu'elle puisse être spécifiée séparément.

Vous pouvez effectuer un regroupement pour une expression à condition qu'elle ne contienne pas de fonction d'agrégation. Par exemple :

SELECT DATEPART(yy, HireDate) AS Year,
       COUNT(*) AS NumberOfHires
FROM AdventureWorks.HumanResources.Employee
GROUP BY DATEPART(yy, HireDate)

Voici l'ensemble des résultats. 

Year        NumberOfHires
----------- -------------
1997        2
2001        21
2000        45
1996        1
2003        3
1999        198
1998        16
2002        4

(8 row(s) affected)

Dans une clause GROUP BY, vous devez indiquer le nom d'une colonne d'une table ou d'une vue, et non pas le nom d'une colonne d'un ensemble de résultats attribué avec une clause AS. Par exemple, le remplacement de la clause GROUP BY DATEPART(yy, HireDate) par GROUP BY Year est interdit.

Vous pouvez indiquer plusieurs colonnes dans la clause GROUP BY afin d'imbriquer des groupes ; en d'autres termes, vous pouvez regrouper une table selon n'importe quelle combinaison de colonnes. Par exemple, la requête suivante calcule le prix moyen et le total annuel des ventes à ce jour, groupés par ID de produit et par ID d'offre spéciale :

USE AdventureWorks;
GO
SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS 'Average Price', 
    SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY ProductID, SpecialOfferID
ORDER BY ProductID
GO

Voir aussi

Autres ressources

SELECT (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005