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