【发布时间】:2021-04-02 13:26:55
【问题描述】:
我正在努力构建一个使用日期范围动态构建累积总和的查询。
打个比方,我希望计算每位客人每天订购的客房服务盘子的平均数量。以以下示例数据集为例:
| guest_id | most_recent_plate_ordered_date | cumulative_plates_ordered |
|---|---|---|
| 1 | 10/1/2020 | 1 |
| 1 | 10/2/2020 | 2 |
| 1 | 10/4/2020 | 3 |
| 2 | 10/1/2020 | 1 |
| 2 | 10/2/2020 | 1 |
| 3 | 10/3/2020 | 1 |
| 3 | 10/4/2020 | 2 |
这是我想要达到的输出:
| date | cumulative_plates_ordered | number_of_people |
|---|---|---|
| 10/1/2020 | 2 | 2 |
| 10/2/2020 | 3 | 2 |
| 10/3/2020 | 4 | 3 |
| 10/4/2020 | 6 | 3 |
本质上,我需要构建两个数字:每人订购的最大盘子数量和每天的人数之和。我已经生成了每天的人数——这很容易。我正在努力构建一个查询,该查询可以随着日期范围的扩大而动态求和。
我能够生成为给定日期最大值提供所需数字的查询。我的问题是将其转换为在一个查询中在所有可能的日期中生成此数字的东西。这是一个范围从 10/1 到 10/1 的示例查询:
select sum(max_cumulative_plates_ordered) from (
select guest_id, max(cumulative_plates_ordered) as max_cumulative_plates_ordered
from raw_data
where most_recent_plate_ordered_date <= '2020-10-01'
group by 1
)
有什么想法吗?感觉这是一个很容易解决的问题。
【问题讨论】:
-
我有点困惑。 2020-10-04 只有两行。为什么值为“3”?
标签: sql datetime amazon-redshift aggregate-functions