Отделите ограничение числа строк от этапа сортировки
Зачем
Зачем это нужно
Задайте второй критерий для одинаковых баллов
Уточните версию Oracle до выбора FETCH FIRST или другого синтаксиса
Вопросы
Частые вопросы
Как запросить корректный top-N для Oracle?
Для Oracle таблица scores(id NUMBER PRIMARY KEY, points NUMBER NOT NULL). Есть строки (1,10),(2,30),(3,20),(4,30). Нужны две лучшие: points по убыванию, при равенстве id по возрастанию. Объясни ошибку запроса с WHERE ROWNUM<=2 и ORDER BY в одном блоке. Покажи вариант с упорядоченным подзапросом и вариант FETCH FIRST для поддерживающей версии. Дай ожидаемые id, SQL не выполняй.
Что передать для разбора Oracle SQL или PL/SQL?
Укажите версию Oracle, определения таблиц, SQL и текст ошибки с местом возникновения. Для PL/SQL добавьте связанный блок и договор обработки исключений. Уберите секреты и реальные данные. Сначала проверьте логику на малом наборе, затем обсуждайте план.
Какие две строки должны попасть в top-N?
При заданной сортировке ожидаются id 2 и 4 именно в таком порядке. Переставьте строки в тестовой загрузке и повторите выборку: результат должен сохраниться. Не опирайтесь на физический порядок хранения таблицы.
Подходит ли FETCH FIRST любой установке Oracle?
Нет, синтаксис и ограничения зависят от версии сервера и формы запроса. Также выбор ровно двух строк отличается от выбора всех строк с равными пограничными баллами. Этот договор нужно задать до написания SQL.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.