解题思路:
- ①先给每个数进行排名;
- ②用这些数减去自己的排名,如果减了之后的结果是一样的,说明这几个数是连续的;
- ③用logid减去排名得出来的数进行group by,也就是把连续的数全都放在一个一个小组里面,求出每个小组的最大值和最小值;
方法一:
select min(log_id) as start_id, max(log_id) as end_id
from
(select log_id,
rank() over(order by log_id asc) as ranking
from logs) a
group by (log_id-ranking)