Группировка по нескольким столбцам

Базовый SQL
≈ 1 мин чтения

Группу может определять сочетание значений

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

SELECT category, status, COUNT(*) AS product_count
FROM products
GROUP BY category, status;

Например, товары категории book со статусом ACTIVE образуют одну группу, а товары той же категории со статусом ARCHIVED — уже другую.

Количество групп растёт вместе с детализацией

Группировка только по category отвечает на вопрос «сколько товаров в каждой категории». Добавление status меняет вопрос на «сколько товаров каждого статуса в каждой категории».

SELECT country, city, AVG(total) AS average_order
FROM orders
GROUP BY country, city;

Теперь среднее считается отдельно для каждой пары country + city, а не для страны целиком.

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