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```