1. 程式人生 > >以部門號分組,查詢薪水前三的員工

以部門號分組,查詢薪水前三的員工

SELECT
    * 
FROM
    emp AS a 
WHERE
    3 > ( SELECT count( * ) FROM emp WHERE deptno = a.deptno AND sal < a.sal ) 
ORDER BY
    a.deptno,
    a.sal
    
SELECT
    a.* 
FROM
    (
SELECT
    t1.*,
    ( SELECT count( * ) + 1 FROM emp WHERE deptno = t1.deptno AND sal < t1.sal ) AS group_id 
FROM
    emp t1 
    ) a 
WHERE
    a.group_id <= 3 
ORDER BY
    a.deptno,
    a.sal
    
SELECT
    t.* 
FROM
    ( SELECT ROW_NUMBER ( ) OVER ( PARTITION BY deptno ORDER BY sal DESC ) rn, b.* FROM emp b ) t 
WHERE
    t.rn <= 3;