Итоговые данные (предложение 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.