Думаю многим кажется, что 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 – рассчитывает результаты нескольки