计算mysql中的连续值

  • 本文关键字:连续 mysql 计算 mysql
  • 更新时间 :
  • 英文 :


UPDATE:我本应该提到,是的,我已经搜索并尝试应用了许多例子,但没有一个给出想要的结果。

我正在尝试使用mysql计算大型数据集中连续值的数量。

我尝试过使用分区,但是没有得到正确的结果。

结果:使用分区

我正在寻找的结果是

结果:所需

这是数据集的一个样本

SQL Fiddle

有人能告诉我如何得到想要的结果吗?

这是一个经典的gaps and island问题。代码应该是不言自明的,但这里有两个步骤的大致想法:

  1. 识别每个分区,通过将当前行中的值与前一行进行比较

  2. 使用带窗口的运行总和创建块/岛


with cte1 as
(select *, case when flagkey=lag(flagkey) over (partition by supplierkey, attributekey, productkey, locationkey order by datekey) then 0 else 1 end as island_start
from t),
cte2 as
(select *, sum(island_start) over (partition by supplierkey, attributekey, productkey, locationkey order by datekey) as island
from cte1)
select *, row_number() over (partition by island order by datekey) as outcome
from cte2

最新更新