如何无需OR条件计算每月最后三天的sales_volume总和
问题
测试数据表
CREATE TABLE sales ( id SERIAL PRIMARY KEY, event_date DATE, sales_volume INT ); INSERT INTO sales (event_date, sales_volume) VALUES ('2023-01-27', '900'), ('2023-02-28', '500'), ('2023-01-29', '100'), ('2023-01-30', '600'), ('2023-01-31', '450'), ('2023-02-25', '300'), ('2023-02-26', '250'), ('2023-02-27', '845'), ('2023-02-28', '520'), ('2023-03-26', '750'), ('2023-03-27', '750'), ('2023-03-28', '625'), ('2023-03-29', '885'), ('2023-03-30', '120'), ('2023-03-31', '400');
预期结果
| 行号 | 月份 | 销售总量 |
|---|---|---|
| 1 | 1 | 1150 |
| 2 | 2 | 2115 |
| 3 | 3 | 1405 |
我需要计算每个月指定日期范围内的sales_volume总和,目前用以下查询实现:
SELECT DATE_PART('month', s.event_date) AS event_time, SUM(s.sales_volume) AS sales_volume FROM sales s WHERE s.event_date BETWEEN '2023-01-29' AND '2023-01-31' OR s.event_date BETWEEN '2023-02-26' AND '2023-02-28' OR s.event_date BETWEEN '2023-03-29' AND '2023-03-31' GROUP BY 1 ORDER BY 1;
但实际数据库数据量很大,需要编写大量OR条件,请问如何修改查询,无需使用OR条件就能实现需求?
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

