[英]SQL - lag variable creation using window function
你可以用這個L
select
CITY
, month(Date)
, year(date)
, sum(count)
from table1
where date < Datediff(days , 7 , getdate())
group by
City
, month(Date)
, year(date)
我想你正在尋找這樣的東西。 第一個 cte 將城市計數匯總到日、周、月、年。 第二個總結了周、月、年的計數。 要從第 1 天開始按周對銷售額進行分組,它使用 DAY 函數以及 YEAR 和 MONTH。 由於 DAY 返回整數,因此可以通過除以 7 來創建不同周的組,即 DAY(day_dt)/7。
獲得前一周銷售額的一種方法是將周銷售額摘要 cte 加入到自身中,其中一周被 -1 抵消。 由於前一周可能有 0 個銷售,因此 LEFT JOIN 似乎比使用 LAG imo 更安全
with
day_sales_cte(city, day_dt, yr, mo, wk, sum_count) as (
select city, day_dt, year(day_dt), month(day_cte), day(day_dt)/7, sum([count]) sum_counts
from city_level_data
group by city, day_dt, year(day_dt), month(day_cte), day(day_dt)/7)
wk_sales_cte(city, yr, mo, wk, sum_count) as (
select city, yr, mo, wk, sum(sum_counts) sum_counts
from sales_cte
group by city, yr, mo, wk)
select ws.*, ws2.sum_sales prior_wk_sales
from wk_sales_cte ws
left join wk_sales_cte ws2 on ws.city=ws2.city
and ws.yr=ws2.yr
and ws.mo=ws2.mo
and ws.wk=ws.wk-1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.