i have a table named sequence with a single column val and table looks like
x
val
-----
1
2
3
5
8
9
10
i need to identify the range of numbers if there is a break in sequence and output like
range_start range_end
----------- ----------
1 3
5 5
8 10
Advertisement
Answer
Subtract an increasing sequence and you’ll get a constant for values that are in sequence. Then aggregate:
select min(val), max(val)
from (select val, row_number() over (order by val) as seqnum
from t
) t
group by (val - seqnum);