关于MySQL中的窗口,我有一个简短的问题
SELECT
Client,
User,
Date,
Flag,
lag(Date) over (partition by Client,User order by Date asc) as last_date,
lag(Flag) over (partition by Client,User order by Date asc) as last_flag,
case when Flag = 1 and last_flag = 1 then 1 else 0 end as consecutive
FROM db.tbl
此查询返回类似以下内容的内容.我正在try 计算每个用户的标志列为1的连续次数,如果他们有111most recently00111次,那么我们应该取最后三次出现1来确定他们具有连续的标志3次.
我需要提取连续旗帜的开始和结束日期.
我该如何着手做这件事,有人能帮我吗:)
如果我们使用11110000111的例子,那么我们应该只提取111,从而提取该客户的3个最近日期.因此,在下面的代码中,我们需要将10.01.2023作为第一个日期,将24.01.2023作为最后一个日期.连续计数应为3
输出: