sql >> Database teknologi >  >> RDS >> Oracle

Hvordan kombinerer jeg både mine top 5 lønninger og de nederste 5 for at vise dem i Oracle?

Brug UNION eller 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;

Du kan også skrive dette mere kortfattet som:

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. Databasestruktur til at holde statistik efter dag, uge, måned, år

  2. SÆT BEGRÆNSNINGER ALLE UDSAT virker ikke som forventet

  3. Entity framework forbindelse med oracle database

  4. <expr> forventet, fik '?'