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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
Что вернёт запрос SELECT AVG(salary) FROM employees;?
Тренировать SQL в Telegram

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