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. リモートMySQLデータベースへのGoogleフォーム出力

    2. エラーコード1292-誤ったDOUBLE値を切り捨てました-Mysql

    3. 列と値の組み合わせに基づいて一意の行を取得するにはどうすればよいですか?

    4. MySQLカウント行のパフォーマンス