Обычно для отчётов приходится писать несколько
GROUP BY с разными уровнями агрегации. Но ROLLUP умеет делать это автоматически:SELECT department, SUM(salary) AS total
FROM employees
GROUP BY ROLLUP(department);
В результате вы получите суммы по каждому отделу и общую строку «итого»:
SELECT region, department, SUM(salary) AS total
FROM employees
GROUP BY CUBE(region, department);
А
CUBE даёт все комбинации агрегатов: по региону, по отделу и полный итог:SELECT COALESCE(region,'ALL') AS region,
COALESCE(department,'ALL') AS department,
SUM(salary) AS total
FROM employees
GROUP BY CUBE(region, department);
🔥
ROLLUP и CUBE экономят десятки строк кода, когда нужны многоуровневые отчёты.➡️ SQL Ready | #практика