Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да комбинирам моите най-добри 5 заплати и най-долните 5, за да ги покажа в Oracle?

Използвайте UNION или UNION ALL :

SELECT SAL FROM
(
SELECT DISTINCT SAL FROM EMP WHERE SAL IS NOT NULL ORDER BY SAL DESC
)
WHERE ROWNUM < 6
UNION ALL
SELECT SAL FROM
(
SELECT DISTINCT SAL FROM EMP WHERE SAL IS NOT NULL ORDER BY SAL ASC
)
WHERE ROWNUM < 6;

Можете също да напишете това по-сбито като:

SELECT SAL
FROM (SELECT DISTINCT SAL,
             DENSE_RANK() OVER (ORDER BY sal) as seqnum_asc,
             DENSE_RANK() OVER (ORDER BY sal) as seqnum_desc
      FROM EMP
      WHERE SAL IS NOT NULL
     ) s
WHERE seqnum_asc < 6 OR seqnum_desc < 6;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете от таблицата, като знаете само дата без час (ORACLE)

  2. Как мога да получа броя на записите, засегнати от съхранена процедура?

  3. първи ред VS Следващ ред VS rownum

  4. Вземете колона с първичен ключ на таблица в Oracle

  5. Запитване на имена на колони от таблица от друг потребител