Что вернёт запрос SELECT region, category, COUNT(*) FROM sales GROUP BY ROLLUP(region, category)?

AТолько строки по парам region и category без подытогов и общего итога: итоги нужно считать отдельным UNION ALL
BСтроки по каждой category с NULL в столбце region и общий итог: разбивка по отдельным регионам отсутствует
CДекартово произведение region и category с COUNT(*) в каждой ячейке независимо от наличия данных
DСтроки по парам region и category, подытоги по регионам с NULL в category и общий итог с NULL в обоих столбцах
Правильный ответ. ROLLUP(a, b) генерирует три уровня группировки: (a, b), (a) и (). Строки с итогами помечаются NULL в соответствующих столбцах.

Разбор

GROUP BY ROLLUP(region, category) генерирует группировки (region, category), (region) и (). Для таблицы продаж получаем подсчёт по каждой паре регион-категория, подытог по каждому региону с NULL вместо category, и общий итог с NULL в обоих столбцах. Функция GROUPING(col) позволяет отличить синтетический NULL в строке итога от реального NULL в исходных данных.

Проверь себя · 1/3разбор после ответа
В таблице пользователей есть колонка middle_name, в которой часто хранится NULL. Что вернёт выражение COUNT(middle_name)?
Тренировать SQL в Telegram

Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»