Итоговые данные (предложение GROUP BY)

Предложение GROUP BY позволяет группировать записи в подмножества, определяемые значениями какого-либо поля, и применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе.

В контексте оператора SELECT предложение GROUP BY имеет следующий вид:

SELECT <column_name> [,...]
FROM <table_name>
[WHERE <conditions>]
[GROUP BY <column_name> | formula [,... ]
[ORDER_BY <column_name>|<column_number> [ASC | DESC][,...]

Список GROUP BY может содержать имена полей таблицы, выражения, заголовки столбцов и их порядковые номера в списке выбора.

IDevice IconПример

Подсчитать количество клиентов в городах:

SQL:
SELECT region, COUNT(*) AS num_clients
FROM tbl_clients
GROUP BY region

Результат:

region num_clients
California 33
Los Angeles 99
New Jersey 33
New York 33
Oregon 33
Portland 44
Seattle 77
Washington 32

Приведенный выше оператор SELECT предписывает вывести два столбца — region, содержащий название города, и и num_clients, содержащий вычисляемые поля (он создается с помощью функции COUNT (*)).

Предложение GROUP BY указывает СУБД группировать данные по столбцу region_id. В результате значение num_clients будет вычисляться по одному разу для каждой группы записей region, а не один раз для всей таблицы products.