Я довольно много работал с оконными функциями, но не думаю, что достаточно хорошо понимаю, как они работают, чтобы ответить, почему они ведут себя так, как они.
Для запроса, над которым я работал (ниже), почему я должен взять свое агрегированное поле и добавить его в группу? (Во второй половине моего запроса ниже я не могу получить результат, если я не включил «События» во вторую группу):
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
Я столкнулся с этим достаточно, чтобы я просто принял это как должное, но очень хотелось бы еще немного цвета, почему это необходимо. Есть ли способ, которым я должен форматировать их по-разному, чтобы избежать этого (несколько не интуитивного) требования?
Спасибо за тонну!