Следующий запрос будет выполнять то, что делает ваш запрос Oracle.
select count(*) from
(select column1, row_number() over() as x from table1) as t
group by column1 having max(t.x) = 6;
Однако
Ни оракул не Postgres будет гарантировать порядок, в котором записи считываются, если не указано заказ по п. Поэтому выполнение запроса несколько раз будет несовместимым в зависимости от того, как база данных решает обработать запрос. Конечно, в postgres любые обновления изменят порядок строк.
В приведенном ниже примере у меня есть дополнительная колонка seq
, которая используется для обеспечения согласованного сортировки.
CREATE TABLE table1 (column1 int, seq int);
insert into table1 values (0,1),(0,2),(0,3),(1,4),(0,5),(1,6);
И пересмотренный запрос, который заставляет порядок, чтобы быть последовательным:
select count(*) from
(select column1, row_number() over (order by seq) as x from table1) as t
group by column1 having max(t.x) = 6;
Если честно: я не думаю, что этот запрос делает много смысла в Oracle. Что именно это должно делать? –
Я тестировал конкретный стол. Таблица имеет 6 строк, а столбец из предложения group-by имеет значения: 0, 0, 0, 1, 0, 1. Для max (rownum) = 5 возвращает 4, для max (rownum) = 6 возвращает 2, и для другого значения запрос не возвращает строку. –
Можете ли вы обновить свой вопрос, чтобы включить определение таблицы и инструкции вставки, пожалуйста? – Boneist