Ой, забыл код выделить. Вот так оно красивее будет:
with t (num)
as (
select 56 as num union all
select 57 as num union all
select 58 as num union all
select 60 as num union all
select 61 as num union all
select 63 as num union all
select 70 as num union all
select 71 as num
)
-- Конец эмуляции тестовых данных.
--
-- Непосредственно сам запрос:
select min(num) as start_num,
max(num) as end_num,
count(1) as cnt
from (
select num,
(
select count(num)
from t t1
where t1.num <= t.num
) as rn
from t)
group by num - rn
Query finished, retrieving results...
START_NUM END_NUM CNT
--------- ------- ---
56 58 3
60 61 2
63 63 1
70 71 2
4 row(s) retrieved