Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предложение 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