Oracle/SQL - разделить список на 3 сегмента

Мне интересно, как бы я написал запрос, чтобы разделить таблицу на 3 сегмента. Когда мне приходилось разбивать таблицу на 2, я всегда основывал ее на rownum и делал на ней мод. Я знаю, что мог бы снова использовать rownum и выбирать на основе диапазонов, но если количество записей в списке меняется каждый раз, когда выполняются запросы, их придется обновлять.

Какие-нибудь мысли?


person dscl    schedule 14.06.2011    source источник
comment
Я не хочу разбивать таблицу. Мне просто нужно создать 3 представления, каждое из которых будет извлекать 33% списка. Я надеялся, что есть лучший способ сделать это, чем использовать rownum ‹ и › чем то и то, чтобы по мере масштабирования таблицы запросы не приходилось переписывать.   -  person dscl    schedule 14.06.2011
comment
Почему mod не работает с 3, если работало с 2?   -  person Tony Andrews    schedule 14.06.2011
comment
@dscl: почему бы не использовать разбиение? тогда вы должны сделать: select * from mytable partition(some_partition_name); легко, поддерживает себя, и да, это масштабируется.   -  person tbone    schedule 14.06.2011
comment
Для создания разделов требуется корпоративная версия плюс дополнительные сборы, возможно, это может повлиять.   -  person DCookie    schedule 14.06.2011
comment
Мод не работает, потому что мой слабый мозг дал сбой. Извините, что тратил время на такой простой вопрос, но старая башка крутилась не в том направлении.   -  person dscl    schedule 14.06.2011


Ответы (1)


Почему нельзя продолжать использовать MOD, как в MOD(rownum, 3) = 0, 1 или 2? Если сработало на 2-х, то почему не на 3-х?

person DCookie    schedule 14.06.2011