Компоненты предложения GROUP BY

Предложение GROUP BY содержит следующие компоненты.

  • Одно или несколько выражений без статистических операций. Как правило, эти выражения представляют собой ссылки на столбцы группирования.
  • Необязательное ключевое слово ALL, которое свидетельствует о том, что будут возвращены все группы, созданные предложением GROUP BY, даже если некоторые из этих групп не содержат строк, соответствующих условиям поиска.
  • Оператор CUBE или ROLLUP.
  • Как правило, вместе с предложением GROUP BY используется предложение HAVING, хотя оно может быть указано отдельно.

Выполнять группировку по выражению можно в том случае, если оно не включает статистических функций. Например:

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

Ниже приводится результирующий набор.

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

(8 row(s) affected)

В предложении GROUP BY нужно указать имя таблицы или столбца представления, а не имя столбца результирующего набора, заданное при помощи предложения AS. Например, заменить предложение GROUP BY DATEPART(yy, HireDate) предложением GROUP BY Year нельзя.

В предложении GROUP BY можно указать более одного столбца для организации вложенных групп, то есть можно сгруппировать таблицу по любой комбинации столбцов. Например, следующий запрос определяет среднюю стоимость продуктов и объем продаж за год до текущего момента, сгруппированных по кодам продуктов и идентификаторам специальных предложений:

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

См. также

Другие ресурсы

SELECT (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005