Второй способ получения вывода с использованием SQL-запроса в ORACLE - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть таблица, в которой есть данные:

enter image description here

Мой ожидаемый результат:

enter image description here

Я получил ожидаемый результат с использованием rownum:

SELECT ID,PRICE FROM OT.TEST1 WHERE ROWNUM<3;

Это работает хорошо, так как я вставил данные последовательно, поскольку вывод идет с rownum, но что, если данныениже были вставлены как случайные, мой rownum не будет работать. Есть ли новый метод?

ID PRice
3  300
3  600
8  600
2  600

1 Ответ

1 голос
/ 30 сентября 2019

Вы можете использовать ROW_NUMBER() здесь:

WITH cte AS (
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY PRICE, ID) rn
    FROM OT.TEST1 t
)

SELECT ID, PRICE
FROM cte
WHERE rn <= 2;

Здесь мы присваиваем номер строки по всей таблице, упорядоченной сначала по возрастанию цены, а затем по ID. Поскольку три записи связаны по цене 600, запись с наименьшим значением ID будет возвращена сюда.

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