2023年月度支付次数及总额统计SQL查询需求
解决2023年各月支付统计问题
需要统计2023年每个月的支付次数和支付总额,对应输出月份名称、支付次数、格式化后的支付总额。以下是修正后的SQL方案:
SELECT TO_CHAR(created_at, 'FMMonth') AS Month, COUNT(*) AS "Payment Count", TO_CHAR(SUM(converted_total), 'FM999,999') AS "Payment Total" FROM production.payments WHERE created_at >= '2023-01-01' AND created_at < '2024-01-01' AND status != 'failed' GROUP BY EXTRACT(YEAR FROM created_at), EXTRACT(MONTH FROM created_at), TO_CHAR(created_at, 'FMMonth') ORDER BY EXTRACT(MONTH FROM created_at);
关键修改说明
- 生效过滤条件:移除注释符号,补充完整2023年日期范围(避免误包含2024年数据),明确排除失败状态的支付记录
- 替换聚合逻辑:用
GROUP BY按月分组统计,替代原窗口函数的累计计算逻辑,直接输出每月的聚合结果 - 格式化输出:
- 用
TO_CHAR(created_at, 'FMMonth')生成无多余空格的月份名称(如January而非January) - 用
TO_CHAR将总额格式化为带千分位的字符串,匹配期望输出样式
- 用
- 排序优化:按月份数字排序,保证结果按自然月份顺序展示
现有数据样例
| Created_at | Currency | Converted_Subt | subtotal | converted_total | Total | YTD_Frame |
|---|---|---|---|---|---|---|
| 2018-01-01 | USD | 20000 | 200.00 | 206.00 | 206000 | |
| 2018-01-01 | USD | 40000 | 400.00 | 410.00 | 48000 | |
| 2018-01-02 | USD | 34000 | 340.00 | 342.00 | 82000 | |
| 2018-01-02 | USD | 45000 | 450.00 | 440.00 | 64000 | |
| 2018-02-01 | USD | 50000 | 500.00 | 505.00 | 164000 | |
| 2019-02-01 | USD | 142000 | 1420.00 | 1420.00 | 112000 | |
| 2019-01-18 | USD | 80000 | 800.00 | 807.00 | 238200 | |
| 2019-03-20 | USD | 225000 | 2250.00 | 2260.00 | 421400 | |
| 2020-01-01 | USD | 205000 | 2050.00 | 2050.00 | 716600 | |
| 2020-01-01 | USD | 150000 | 1500.00 | 1520.00 | 1329000 | |
| 2021-01-01 | USD | 74000 | 740.00 | 740.00 | 231900 | |
| 2021-01-01 | USD | 50000 | 500.00 | 500.00 | 94200 | |
| 2021-01-01 | USD | 40000 | 400.00 | 400.00 | 198300 | |
| 2022-01-01 | USD | 75000 | 750.00 | 752.00 | 997700 | |
| 2022-01-01 | USD | 125000 | 1250.00 | 1250.00 | 802000 | |
| 2023-01-01 | USD | 82000 | 820.00 | 820.00 | 781400 | |
| 2023-06-04 | USD | 90000 | 900.00 | 900.00 | 909200 | |
| 2023-11-10 | USD | 105000 | 1050.00 | 1050.00 | 899300 |
期望输出格式
| Month | Payment Count | Payment Total |
|---|---|---|
| January | 240 | 304,874 |
| February | 262 | 423,971 |
| March | 281 | 238,761 |
| April | 207 | 348,112 |
| May | 298 | 403,171 |
| June | 240 | 304,874 |
| July | 262 | 436,001 |
| August | 282 | 241,891 |
| September | 214 | 347,123 |
| October | 301 | 307,174 |
内容的提问来源于stack exchange,提问作者E A S
相关产品推荐
相关产品推荐

