Следующий SQL вернет col_ids первой половины таблицы.
SELECT col_id FROM table
WHERE rownum <= (SELECT count(col_id)/2 FROM table);
Если общее число col_ids является нечетным числом, то вы получите первую половину - 1. Это потому, что, например, у нас всего 51 запись, count (col_id) / 2 возвращает 25,5, и поскольку нет rownum равного этому результату, мы получаем все, равное 25 и ниже. Это означает, что остальные 26 не возвращаются.
Однако я не видел, чтобы работало обратное утверждение:
SELECT col_id FROM table
WHERE rownum > (SELECT count(col_id)/2 FROM table);
Так что, если вы хотите вторую половину таблицы, вы можете просто сохранить первые результаты во временной таблице, назовем ее TABLE_A. Тогда просто сделайте МИНУС на исходном столе из этой таблицы:
SELECT col_id FROM table
МИНУС
SELECT col_id FROM table_a
Надеюсь, это кому-нибудь поможет.