Как отобразить только 20 пунктов результата в Oracle OCL?

Можно ли отобразить только 20 пунктов всего результата? Я знаю о запросе "rownum>=20", но это только делает проверку SQL только первые 20 строк в таблице. Но я хочу, чтобы sql проверил всю мою таблицу и отображал только самые высокие 20 записей.

Чтобы было ясно, у меня есть таблица с описанием работы, как название, описание, агентство, salary_min, оклад макс. Я хочу показать 20 самых высокооплачиваемых рабочих мест.

4 ответа

Решение

"Самые высокие" 20 записей предполагают сортировку. Вы бы сделали что-то вроде этого:

select t.*
from (select t.*
      from table t
      order by highestcol desc
     ) t
where rownum <= 20;

Если вы используете Oracle 12g или более позднюю версию, вы можете использовать fetch first пункт вместо:

select t.*
from table t
order by highestcol desc
fetch first 20 rows only;
select a.fld1, a.fld2 
from 
  ( select fld1, fld2
    from mytable 
    order by 1 desc) a
where rownum <21;

Это один из способов сделать то, что, как я думаю, вы просили. Есть и другие способы, которыми могут предоставить другие постеры.

Сначала отсортируйте (order by), а затем используйте функцию rownum.

select * from  
( select * 
  from emp 
  order by field ) 
where ROWNUM <= 20;
Другие вопросы по тегам