给定一个具有以下列的数据库:(int)id,(DATE)beginDay,(DATE)endDay
找到相隔1天的连续日期,并输出beginDay和endDay
i.e
1 | 2011-01-01 2011-01-02
2 | 2011-01-02 2011-01-03
3 | 2011-01-03 2011-01-07
4 | 2011-02-12 2011-02-13打印
2011-01-01 2011-01-03
2011-02-12 2011-02-13发布于 2021-05-10 08:41:57
这是一种缝隙和岛屿问题。您可以通过从日期中减去一系列值来解决这个问题--如果日期是连续的,则差异是恒定的。
如果您正在查看beginday,您可以使用:
select min(beginday), max(beginday)
from (select t.*,
row_number() over (order by beginday) as seqnum
from t
) t
group by beginday - interval seqnum day;如果你关心endday,你可以直接使用:
select t.*
from t
where endday = begindate + interval 1 day;https://stackoverflow.com/questions/67463490
复制相似问题