Sql 如何根据事件计算趋势
我必须尝试根据以下内容计算客户的趋势: 4周内任何2个0销售实例 比如说- 在第27周和第36周之间,该特定商店在第27周和第32周之间的销售额为0。 然后在第33周和第35周之间进行销售,最后一周的销售为0 我的完整数据集包含每个人的多个存储,为了解释的清晰起见,将其缩减 结果我在追求 我需要一个人的总数,每周,所有的商店有2个实例的0销售在过去4周 因此,对于这家商店,我希望在第27周到第34周看到1的值,因为在这段时间内,每一周,该周和前3周至少有2个销售实例为0 第35周和第36周应为0,因为这两周在4周中至少有3周有销售 到目前为止我已经知道了,但不太正确Sql 如何根据事件计算趋势,sql,Sql,我必须尝试根据以下内容计算客户的趋势: 4周内任何2个0销售实例 比如说- 在第27周和第36周之间,该特定商店在第27周和第32周之间的销售额为0。 然后在第33周和第35周之间进行销售,最后一周的销售为0 我的完整数据集包含每个人的多个存储,为了解释的清晰起见,将其缩减 结果我在追求 我需要一个人的总数,每周,所有的商店有2个实例的0销售在过去4周 因此,对于这家商店,我希望在第27周到第34周看到1的值,因为在这段时间内,每一周,该周和前3周至少有2个销售实例为0 第35周和第36周应为0
任何帮助都将不胜感激……如果我理解正确,您需要一个基于前四行零销售额累计计数的标志。如果是,您可以使用窗口功能:
select s.*,
(case when sum(case when TotalSales = 0 then 1 else 0 end) over
(partition by customerid, person
order by year, week
rows between 3 preceding and current row
) >= 2
then 1 else 0
end) as flag
from Sales s;
是一个数据库文件。编辑您的问题,提供一个数据库标签,并显示您想要的结果。我不知道你想要什么结果。嗨,戈登,太好了。没想到我离得那么远。。只是不能完全到达那里
select s.*,
(case when sum(case when TotalSales = 0 then 1 else 0 end) over
(partition by customerid, person
order by year, week
rows between 3 preceding and current row
) >= 2
then 1 else 0
end) as flag
from Sales s;