选择日期范围内的分组值总和(窗口函数)
Posted
技术标签:
【中文标题】选择日期范围内的分组值总和(窗口函数)【英文标题】:Select Sum of Grouped Values over Date Range (Window Function) 【发布时间】:2021-07-29 20:00:59 【问题描述】:我有一张包含姓名、日期和数值的表格。我想知道第一个日期输入的总日期和第一个日期后前 90 天的数值总和。
例如
name | date | value |
---|---|---|
Joe | 2020-10-30 | 3 |
Bob | 2020-12-23 | 5 |
Joe | 2021-01-03 | 7 |
Joe | 2021-05-30 | 2 |
我想要一个返回的查询
name | min_date | sum_first_90_days |
---|---|---|
Joe | 2020-10-30 | 10 |
Bob | 2020-12-23 | 5 |
目前为止
SELECT name, min(date) min_date,
sum(value) over (partition by name
order by date
rows between min(date) and dateadd(day,90,min(date))
) as first_90_days_sum
FROM table
但它没有执行。这里有什么好的方法?如何设置窗口函数以对每个分区使用动态日期范围?
【问题讨论】:
【参考方案1】:您可以使用窗口函数和聚合:
select name, sum(value)
from (select t.*,
min(date) over (partition by name) as min_date
from t
) t
where date <= min_date + interval '90 day'
group by name;
【讨论】:
以上是关于选择日期范围内的分组值总和(窗口函数)的主要内容,如果未能解决你的问题,请参考以下文章