tgoop.com/data_engineerette/416
Create:
Last Update:
Last Update:
ROLLUP vs CUBE vs GROUPING SETS
Суть этих штук - добавить промежуточные тоталы (как в экселе). Как будто мы group by делаем несколько раз с разными полями
GROUP BY ROLLUP (country, region, city)
country-region-city - 6 строк
country-region - 4 строки
country - 2 строки
all - 1 строка
————
13 строк
Мы с каждым уровнем отбрасываем более детальный столбец и считаем тотал шире
Первые 6 строк - как в обычной группировке (поэтому не расписываю). К ним еще добавляем тоталы по стране с регионом, стране и глобальный тотал:
Russia Moscow Oblast NULL 12800
Russia Siberia NULL 1600
USA California NULL 4900
USA Texas NULL 2300
Russia NULL NULL 14400
USA NULL NULL 7200
NULL NULL NULL 21600
GROUP BY CUBE (country, region, city)
Здесь нужны все комбинации: по 3 элемента, 2, 1, 0
country-region-city - 6 строк
country-region - 4 строк
country-city - 6 строк
region-city - 6 строк
country - 2 строки
region - 4 строки
city - 6 строк
all - 1 строка
————
35 строк
GROUP BY GROUPING SETS ((country, region, city), (country, region), (country), ())
Здесь можно кастомно задавать группы. В этом примере будет то же самое, что и ROLLUP