【问题标题】: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

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

【问题讨论】:

    标签: sql database postgresql amazon-redshift


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多