我需要一个关于以下问题的解决方案
Group Begindate enddate
a1 1/1/2019 2/1/2019
a1 2/1/2019 3/1/2019
a2 3/1/2019 3/2/2019
a2 3/2/2019 3/4/2019
a1 3/4/2019 3/5/2019
a1 3/5/2019 4/1/2019在上面的代码中,我需要根据发生的情况获得三个组。首先出现的是a1,然后是a2,然后是a1。我的结果应该是这样的:
group min(begindate)
a1 1/1/2019
a2 3/1/2019
a1 3/4/2019任何帮助都将不胜感激..
发布于 2019-06-05 23:43:46
这是一个gaps and islands问题。
SELECT group_id,MIN(begindate)
FROM ( SELECT t.*,ROW_NUMBER() OVER( order BY begindate
) - ROW_NUMBER() OVER(
PARTITION BY group_id
ORDER BY begindate
) AS seq
FROM t
)
GROUP BY group_id,seq
ORDER BY 2https://stackoverflow.com/questions/56463342
复制相似问题