Группировка по нескольким столбцам
В предложениях GROUP BY можно указывать столько столбцов, сколько вам необходимо, разделяя имена элементы списка запятыми. Таким образом, путем группировки одновременно по нескольким элементам можно создавать группы внутри групп. Каждый элемент из списка GROUP BY должен обязательно присутствовать в списке выбора — другими словами, группировать можно только выбираемые элементы.
SELECT region, sex, COUNT(*) AS num_clients
FROM tbl_clients
GROUP BY region, sex
Результат:
region | sex | num_clients |
California | f | 18 |
California | m | 15 |
Los Angeles | f | 42 |
Los Angeles | m | 57 |
New Jersey | f | 12 |
New Jersey | m | 21 |
New York | f | 15 |
New York | m | 18 |
Oregon | f | 15 |
Oregon | m | 18 |
Portland | f | 12 |
Portland | m | 32 |
Seattle | f | 37 |
Seattle | m | 40 |
Washington | f | 21 |
Washington | m | 11 |
Сначала строки таблицы разделяются по городам, а затем каждая полученная группа разделяется по полу клиента. В результате получается 16 групп, или наборов. После этого к каждому такому набору применяется агрегирующая функция, которая вычисляет для каждого города количество клиентов женского и мужского пола.