【发布时间】:2020-03-02 18:34:11
【问题描述】:
我一直在使用大量窗口函数,但我认为我对它们的工作方式了解得不够多,无法回答为什么它们会以这种方式运行。
对于我正在处理的查询(如下),为什么我需要获取我的聚合字段并将其添加到 group by? (在下面我的查询的后半部分,如果我的第二组中不包含“事件”,我将无法产生结果)
With Data as (
Select
CohortDate as month
,datediff(week,CohortDate,EventDate) as EventAge
,count(distinct case when EventDate is not null then GUID end) as Events
From MyTable
where month >= [getdate():month] - interval '12 months'
group by 1, 2
order by 1, 2
)
Select
month
,EventAge
,sum(Events) over (partition by month order by SubAge asc rows between unbounded preceding and current row) as TotEvents
from data
group by 1, 2, Events
order by 1, 2
我已经遇到了足够多的问题,以至于我认为它是理所当然的,但我真的很喜欢更多颜色,以了解为什么需要它。有没有办法我应该以不同的方式格式化这些以避免这种(有点不直观)的要求?
非常感谢!
【问题讨论】:
-
这是我发现的最相似的问题,但它似乎没有回答我提出的问题,因为我认为我已经包含了我分组的所有字段,而不是被要求添加在聚合字段中也是如此! stackoverflow.com/questions/19601948/…
标签: sql postgresql group-by window-functions cumulative-sum