在 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
在這個例子中,我們可以看到每個產品和地區的銷售額,以及每個產品和所有地區的總銷售額。最后一行顯示了所有產品和地區的總銷售額。