考虑此表:
我想根据ID和价格值将这些行分为几组:只要两行具有相同的ID和价格,并且不被其他任何行分开,则它们属于同一行组,所以我希望输出像这样:
我尝试使用窗口函数,但最后却得到了与前3个具有相同组的最后一行。
答案 0 :(得分:1)
这是一个空白问题。一种方法是使用lag()
来检测更改,然后使用累积和:
select t.*,
sum(case when prev_price = price then 0 else 1 end) over
(partition by id order by dt) as group_num
from (select t.*,
lag(price) over (partition by id order by dt) as prev_price
from t
) t