在这个案例中,我们将使用PostgreSQL的ROLLUP功能来计算一个电子商务数据库中的销售数据汇总
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
product_id INT,
store_id INT,
sale_date DATE,
amount NUMERIC(10, 2)
);
INSERT INTO sales (product_id, store_id, sale_date, amount)
VALUES (1, 1, '2021-01-01', 100),
(1, 1, '2021-01-02', 200),
(1, 2, '2021-01-01', 300),
(2, 1, '2021-01-01', 400),
(2, 2, '2021-01-02', 500);
SELECT store_id, product_id, SUM(amount) as total_sales
FROM sales
GROUP BY ROLLUP(store_id, product_id)
ORDER BY store_id, product_id;
这将返回以下结果:
store_id | product_id | total_sales
----------+------------+-------------
1 | 1 | 300.00
1 | 2 | 400.00
1 | NULL | 700.00
2 | 1 | 300.00
2 | 2 | 500.00
2 | NULL | 800.00
NULL | NULL | 1500.00
在这个例子中,我们可以看到每个商店和产品的销售总额,以及每个商店和所有产品的销售总额。最后一行显示了所有商店和产品的总销售额。
这就是一个简单的PostgreSQL ROLLUP最佳实践案例。通过使用ROLLUP,我们可以轻松地计算分组数据的汇总,从而更好地理解数据的整体情况。