разделить непоследовательный набор чисел на определенные группы и вернуть в виде строк в базе данных Oracle - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть столбец базы данных с непоследовательными номерами.Скажите 1 3 5 8 13 15 16 17 20 23 34 54 68. Я хочу разделить их на группы по 3 числа в каждой (коэффициент деления равен 3 для равных диапазонов). Как я могу получить значения нижеприведенного диапазона?

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2018

Вот оно.

В предложении 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...