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