ROLLUP vs CUBE vs GROUPING SETS
Суть этих штук - добавить промежуточные тоталы (как в экселе). Как будто мы group by делаем несколько раз с разными полями
ROLLUP
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
CUBE
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 строк
GROUPING SETS
GROUP BY GROUPING SETS ((country, region, city), (country, region), (country), ())
Здесь можно кастомно задавать группы. В этом примере будет то же самое, что и ROLLUP
Обсуждение 5
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram