有趣的SQL-搜索前三名问题

今天看到这样个问题,比如找出每个部门里薪资在前三的所有员工信息

具体数据和SQL是这样的

WITH Employee AS(
       SELECT 1 Id, 'joe' Name,70000 SALARY,1 DepartmentId FROM DUAL UNION ALL
       SELECT 2 Id, 'Henry' Name,80000 SALARY,2 DepartmentId FROM DUAL UNION ALL
       SELECT 3 Id, 'Sam' Name,60000 SALARY,2 DepartmentId FROM DUAL UNION ALL
       SELECT 4 Id, 'Max' Name,90000 SALARY,1 DepartmentId FROM DUAL UNION ALL
       SELECT 5 Id, 'Janet' Name,69000 SALARY,1 DepartmentId FROM DUAL UNION ALL
       SELECT 6 Id, 'Randy' Name,85000 SALARY,1 DepartmentId FROM DUAL
      ),
      Department AS (
       SELECT 1 Id, 'IT' Name FROM DUAL UNION ALL
       SELECT 2 Id, 'Sales' Name FROM DUAL
      )
     
      SELECT T1.Name,T2.*
      FROM
           Department T1
          ,Employee   T2
      WHERE T1.Id= T2.DepartmentId
      AND 3>
      (
        SELECT COUNT(distinct T3.SALARY) RN
        FROM  Employee T3
        WHERE T2.DepartmentId = T3.DepartmentId
        AND T2.SALARY < T3.SALARY
      )
      ORDER BY T2.DEPARTMENTID,T2.SALARY

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/750077/viewspace-2139157/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/750077/viewspace-2139157/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值