Oracle - Как получить значения столбца, необходимые для параметров разделения диапазона - PullRequest
0 голосов
/ 16 октября 2019

Для таблицы T со столбцом C, в которой мне нужно разбить таблицу на секции, как мне получить значения разделов для заданного числа требуемых разделов? Столбец является инкрементным (на 1 или более) и не обязательно уникальным.

Пример сценария: Число записей таблицы T равно 100 000. Отличительные значения для столбца C - 20 000. Минимальное значение для столбца C равно 1000. Максимальное значение для столбца C равно 21000.

Учитывая эту информацию, как мне написать запрос, чтобы получить приведенный ниже результат (который я могу использовать в качестве значений моего раздела).

если 2 раздела: 10 000 21 000

если 3 раздела: 7 000 14 000 21 000

и т. Д. Я не хочу предполагать количество разделов, мне нужно этобыть переменной в запросе.

1 Ответ

0 голосов
/ 16 октября 2019

Хорошо, я наткнулся на NTILE, и ниже, кажется, работает. Дайте мне знать, если есть случаи, когда это может не сработать.

select  part_num, max(column_name)as part_value from(
 select column_name, NTILE(X)OVER ( ORDER BY column_name) part_num FROM table_name)
group by part_num order by part_num

в предположении, что X - это количество разделов, которое мне нужно, в результате чего part_num от 1 до X, а part_value - это то, что я буду использовать в разделе диапазонасинтаксис в предложении «значения меньше чем».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...