Таблица sales содержит 2 уникальных region и 2 уникальных channel. Сколько максимум строк вернёт SELECT region, channel, SUM(revenue) FROM sales GROUP BY CUBE(region, channel)?

A4 строки: CUBE — это синоним ROLLUP, оба создают только иерархические подытоги
B9 строк: CUBE генерирует строки для всех подмножеств полей, включая каждую пару, каждое поле отдельно и общий итог
C5 строк: CUBE создаёт подытоги только по первому полю и общий итог без второго
D3 строки: CUBE группирует только по отдельным полям без их совместной комбинации
Правильный ответ. CUBE(a, b) генерирует все 4 подмножества: (a,b), (a), (b), (). При 2 регионах и 2 каналах: 4+2+2+1=9 строк.

Разбор

CUBE(a, b) создаёт группировки для всех 2^n подмножеств полей: (a, b), (a), (b), (). При 2 регионах и 2 каналах: 4 пары + 2 строки по региону + 2 строки по каналу + 1 общий итог = 9. ROLLUP(a, b) генерирует только (a, b), (a), () — 4+2+1=7 строк, без (b). CUBE перебирает все возможные комбинации, ROLLUP идёт иерархически от правого к левому.

Проверь себя · 1/3разбор после ответа
Что делает оператор DISTINCT?
Тренировать SQL в Telegram

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