Найти в Дзене
data dreamen

CUBE & SQL

Думаю многим кажется, что SQL довольно простой и язык, но на самом деле чтобы его по-настоящему освоить недостаточно знать базовые операции и оконные функции. По личному опыту видел, что многие не знают очень классные функции - cube, grouping_sets.

Если вы работаете с неаддитивность метриками (например dau, mau) и вам нужно посчитать тоталы и субтоталы, то это просто незаменимые функции. 

При добавлении в group by строчки cube(1,2) в вашем запросе появятся null в столбцах по которым вы производите группировку - это и будет тотальное значение по столбцу. При группировке по >1 столбу вы увидите пересечение null одного разреза с не null другого - это субтоталы. Заменяя null на Any вы сможете сделать удобную кубическую витрину.

Отличием функций ROLLUP, CUBE и GROUPING SETS:

ROLLUP – рассчитывает промежуточные итоги для каждого указанного элемента и общий итог.

CUBE — рассчитывает  результаты для всех возможных перекрестных вычислений.

GROUPING SETS – рассчитывает результаты нескольких группировок в один набор данных ( по сути эквивалентен конструкции union all к указанным группам).