选择日期范围内分组值的总和(窗口函数)

我有一个包含姓名、日期和数值的表格。我想知道第一个日期输入的总数和第一个日期后前 90 天的数值总和。

例如

名称 日期 value
2020-10-30 3
鲍勃 2020-12-23 5
2021-01-03 7
2021-05-30 2

我想要一个返回的查询

名称 min_date sum_first_90_days
2020-10-30 10
鲍勃 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

但它没有执行。这里有什么好的方法?如何设置窗口函数以对每个分区使用动态日期范围?

qhzy1 回答:选择日期范围内分组值的总和(窗口函数)

您可以使用窗口函数和聚合:

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;
本文链接:https://www.f2er.com/13610.html

大家都在问