Итоговые данные (предложение 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 может содержать имена полей таблицы, выражения, заголовки столбцов и их порядковые номера в списке выбора.
Подсчитать количество клиентов в городах:
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.