Суть этих штук - добавить промежуточные тоталы (как в экселе). Как будто мы 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