zoukankan      html  css  js  c++  java
  • [原] 求薪水第三高的雇员的SQL题(图解)

    数据库结构如下:
    TableA: Salary(薪水)
      EmpID                 varchar(10)     not null
      DepartID              varchar(5)      not null             foreign key references Department(DepartID)
      Salary                   numeric(12)   null

    TableB: Department(部门)
      DepartID              varchar(5)
      DepartName         varchar(50)

    TableC: Employee(雇员)
      EmpID                  varchar(10)     not null             primary key,
      EmpName             varchar(20)     not null

    要求:写一个SQL语句,找出薪水为第三高的雇员的名字,所在部门以及薪资。

    解答:
    为了方便,使用Access创建上面3个表,如图所示(因为是外包工,所以用的日文的office,非亲日!)



    数据如图:



    思路:
        从高到低,取出薪资的前3名,再在这3名中取最小值。

    SQL语句如下:
    SELECT E.EmpName, S.Salary, D.DepartName                   --取雇员名字,薪资数,部门名
    FROM t_Employee AS E, t_Salary AS S, t_Department AS D
    WHERE S.EmpID=E.EmpID
    AND S.DepartID=D.DepartID
    AND S.EmpID in(
          SELECT S.EmpID FROM t_Salary S
          WHERE S.Salary in(
              SELECT min(S.Salary) FROM t_Salary S                    --在取出的前3名中取最小值
              WHERE S.Salary in(
                  SELECT TOP 3 S.Salary FROM t_Salary S ORDER BY S.Salary DESC    --从高到低取薪资前3名
              )
          )
    )
    AND S.DepartID in(
          SELECT S.DepartID FROM t_Salary S
          WHERE S.Salary in(
              SELECT min(S.Salary) FROM t_Salary S
              WHERE S.Salary in(
                  SELECT TOP 3 S.Salary FROM t_Salary S ORDER BY S.Salary DESC
              )
          )
    );

    运行结果:


    高手飘过,呵呵 :-)

  • 相关阅读:
    Unity的Hierarchies
    Unity的依赖注入
    lucene.net 查询与添加索引的同步问题[参考]
    强烈推荐SQL Prompt 3.8,并发布SQL Prompt 3.8 ,SQL Refator 的xxx
    ffmpg转换FLV
    Asp.net如何验证TextBox控件只输入数字(五种情况分析)转帖
    jquery 图片轮播
    SQL2005安装经验总结
    ajax对大量数据操作超时
    Adobe Flash Builder 4.7破解方法(绝对可用) 【转】
  • 原文地址:https://www.cnblogs.com/temptation/p/645134.html
Copyright © 2011-2022 走看看