Вот оно.
В предложении WITH я создаю тестовые данные.Не беспокойтесь, если вы не понимаете, что он делает;он просто создает представление INPUTS с одним столбцом COL со значениями, которые вы предложили для тестирования.Фактический запрос (решение) начинается после предложения WITH.Чтобы проверить это, удалите все, вплоть до закомментированной строки о выборе из ВХОДОВ.
with
inputs(col) as (
select column_value
from sys.odcinumberlist(1,3,5,8,13,15,16,17,20,23,34,54,68)
)
-- select * from inputs; */
select row_num, min(col) as start_range, max(col) as end_range
from (
select col
, least( ceil(row_number() over (order by col)/3),
trunc(count(*) over () / 3)
) as row_num
from inputs
)
group by row_num
order by row_num
;
ROW_NUM START_RANGE END_RANGE
---------- ----------- ----------
1 1 5
2 8 15
3 16 20
4 23 68