ITPub博客

首页 > 数据库 > 数据库开发技术 > 有趣的SQL-搜索前三名问题

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

原创 数据库开发技术 作者:flzhang 时间:2017-05-16 16:52:56 0 删除 编辑

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

具体数据和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博客 ” ,链接:https://blog.itpub.net/750077/viewspace-2139157/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-03-26

  • 博文量
    97
  • 访问量
    773866