【发布时间】:2022-01-07 08:48:10
【问题描述】:
我有一个任务,我应该累积两个不同的日期,我用以下查询完成了:
with cte as (
select p.starteddate as CD,
(select count(*) from TABLE t1 where p.starteddate=t1.starteddate) Started,
(select count(*) from TABLE t1 where p.starteddate=t1.updateddate) Updated
from TABLE p
group by CD, Started, Updated
)
select
CD,
sum(Started) over (order by CD asc rows between unbounded preceding and current row) as Started,
sum(Updated) over (order by CD asc rows between unbounded preceding and current row) as Updated
from cte
order by CD desc;
现在,我必须在该查询中添加更多值,我被卡住了。
- 查询应考虑名称,并且仅按每个名称累积日期。由于有 11 个左右的名字,我想最好的选择是先用一个不同的查询来检索名字,但我不知道如何在这里更进一步。
- 只应考虑 A 类
- 此外,由于有 1000 行并且还在计数,并且日期可以追溯到一年,因此只应考虑过去 60 天。
谢谢! Example Table
| Type | Startdate | updateddate | name |
|---|---|---|---|
| A | 12/01/21 | 12/01/21 | D |
| A | 11/01/21 | 12/01/21 | D |
| A | 13/01/21 | 13/01/21 | E |
| A | … | … | . |
| A | 07/01/21 | 11/01/21 | E |
| A | 12/01/21 | 14/01/21 | E |
| A | … | … | . |
| A | 14/01/21 | 14/01/21 | G |
| A | 12/01/21 | 12/01/21 | D |
| A | 11/01/21 | 12/01/21 | D |
| A | 13/01/21 | 13/01/21 | E |
| A | … | … | . |
| A | 07/01/21 | 11/01/21 | E |
| A | 12/01/21 | 14/01/21 | E |
| A | 14/01/21 | null | G |
| A | 11/01/21 | 11/01/21 | F |
| A | 14/01/21 | 15/01/21 | G |
| Name | Date | Count Start | Count Updated |
|---|---|---|---|
| E | 07/01/21 | 2 | 0 |
| E | 11/01/21 | 2 | 2 |
| E | 12/01/21 | 4 | 2 |
| E | 13/01/21 | 6 | 4 |
| D | 11/01/21 | 2 | 0 |
| D | 12/01/21 | 4 | 4 |
| G | 14/01/21 | 3 | 1 |
| G | 15/01/21 | 3 | 2 |
| F | 11/01/21 | 1 | 1 |
【问题讨论】:
-
请将示例数据和预期结果添加为我们可以使用的文本,而不是我们不能使用的链接图像。
-
公平点,我用唯一相关的 A 类型编辑了它
标签: mysql group-by common-table-expression cumulative-sum