阅读量:0
在 PostgreSQL 中,ROLLUP 是一种分组集合的操作,它可以计算多个级别的汇总信息
首先,我们创建一个名为 sales_data 的表,其中包含 product_id、region_id 和销售额:
CREATE TABLE sales_data ( product_id INT, region_id INT, sales NUMERIC(10, 2) );
接下来,我们插入一些示例数据:
INSERT INTO sales_data (product_id, region_id, sales) VALUES (1, 1, 100), (1, 2, 200), (2, 1, 300), (2, 2, 400);
现在,我们将使用 ROLLUP 在子查询中进行汇总计算。以下查询将按产品和地区对销售额进行分组,并在子查询中使用 ROLLUP 计算每个产品和地区的总销售额:
SELECT product_id, region_id, SUM(sales) as total_sales FROM sales_data GROUP BY ROLLUP(product_id, region_id) ORDER BY product_id, region_id;
这将返回以下结果:
product_id | region_id | total_sales ------------+-----------+------------- 1 | 1 | 100 1 | 2 | 200 1 | | 300 2 | 1 | 300 2 | 2 | 400 2 | | 700 | | 1000
在这个例子中,我们可以看到每个产品和地区的销售额,以及每个产品和所有地区的总销售额。最后一行显示了所有产品和地区的总销售额。