SQL Practice Logo

SQLPractice Online

ROLLUP & CUBE: Functions

Module: Aggregate Functions & Grouping

-- ROLLUP (hierarchical)

SELECT

region,

country,

SUM(sales) AS total_sales

FROM orders

GROUP BY ROLLUP(region, country);

-- CUBE (all combinations)

SELECT

region,

product,

SUM(sales) AS total_sales

FROM orders

GROUP BY CUBE(region, product);

-- GROUPING function

SELECT

region,

country,

SUM(sales) AS total_sales,

GROUPING(region) AS is_region_total,

GROUPING(country) AS is_country_total

FROM orders

GROUP BY ROLLUP(region, country);

-- GROUPING SETS (custom)

SELECT

region,

product,

SUM(sales) AS total_sales

FROM orders

GROUP BY GROUPING SETS (

(region, product),

(region),

()

);

ROLLUP creates hierarchical subtotals right to left

CUBE creates all possible combinations (2^n groups)

GROUPING(column) returns 1 for subtotal, 0 for detail

NULL in result indicates subtotal/grand total row

GROUPING SETS specifies custom combinations

More efficient than UNION of multiple GROUP BY