Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak połączyć zarówno moje 5 najlepszych zarobków, jak i 5 najniższych, aby wyświetlić je w Oracle?

Użyj UNION lub 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;

Możesz też napisać to bardziej zwięźle jako:

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. Koncepcja:Zbuduj program Java i załaduj go do bazy danych Oracle - funkcja Wrapper wywołuje funkcję java ze zwrotem

  2. problem z wydajnością:różnica między select s.* a select *

  3. Jakie miejsce zajmuje Oracle ADF 11g wśród platform Java EE?

  4. BŁĄD:Odwołaj się do licznika jako celu przypisania — PL/SQL

  5. SSDT w Visual Studio 2015 Problem z połączeniem z Oracle