我在尝试连续几周销售产品时遇到了一些麻烦。我已经将日期转换为周数并为其分配了一个号码,但是很多人都没有销售。如何查找是否有超过3周的销售?
当前数据:
Product_ID ProductCategory WeekNumberOfYear
123 CSF 8
123 CSF 10
456 CSF 1
456 CSF 2
456 CSF 3
456 CSF 4
789 MLI 1
789 MLI 2
789 MLI 3
正如您所见,产品456是唯一连续销售超过3周的产品
我的输出应该是:
Product_ID ProductCategory TotalConsecutiveWeeks
456 CSF 4
OR
Product_ID ProductCategory
456 CSF
如何避免3周或更短时间的非连续销售?任何建议将不胜感激。
答案 0 :(得分:2)
好的,所以你可以使用下面的查询来查找所有趋势超过3周的产品。
提示:将where子句中的3更改为趋势所需的最少周数所需的任何数字 的 Working demo 强>
create table sales (Product_ID int, ProductCategory varchar(10), WeekNumberOfYear int)
insert into sales values
(123,'CSF',8)
,(123,'CSF',10)
,(456,'CSF',1)
,(456,'CSF',2)
,(456,'CSF',3)
,(456,'CSF',4)
,(789,'MLI',1)
,(789,'MLI',2)
,(789,'MLI',3)
;
; with cte as
(
select *,
idx= WeekNumberOfYear- row_number() over (partition by product_id order by weekNumberOfYear)
from sales
)
select
product_id,
ProductCategory,
count=count(1)
from cte
group by product_id,ProductCategory,idx
having count(1)>3