【发布时间】:2020-12-30 16:11:55
【问题描述】:
我正在使用 PostGres DB。
我有一个包含测试名称、结果和报告时间的表格:
|test_name|result |report_time|
| A |error |29/11/2020 |
| A |failure|28/12/2020 |
| A |error |29/12/2020 |
| B |passed |30/12/2020 |
| C |failure|31/12/2020 |
| A |error |31/12/2020 |
我想总结过去 30 天内每个日期有多少测试失败或出错(并将其限制为从当前日期起 5 天),因此最终结果将是:
| date | sum | (notes)
| 29/11/2020 | 1 | 1 failed/errored test in range (29/11 -> 29/10)
| 28/12/2020 | 2 | 2 failed/errored tests in range (28/12 -> 28/11)
| 29/12/2020 | 3 | 3 failed/errored tests in range (29/12 -> 29/11)
| 30/12/2020 | 2 | 2 failed/errored tests in range (30/12 -> 30/11)
| 31/12/2020 | 4 | 4 failed/errored tests in range (31/12 -> 31/11)
我知道如何对每个日期的结果求和(即特定日期有多少失败/错误):
SELECT report_time::date AS "Report Time", count(case when result in ('failure', 'error') then 1 else
null end) from table
where report_time::date = now()::date
GROUP BY report_time::date, count(case when result in ('failure', 'error') then 1 else null end)
但我正在努力总结 30 天前的每个日期。
【问题讨论】:
-
您不能将聚合函数放入
group by,因为在分组之前没有任何计数
标签: sql postgresql sum aggregate