一个SQL题目,求各部门中薪水最高的员工的名称

题:员工表有员工名称,部门ID,和薪水,通过SQL求出每个部门最高薪水的员工的名称

--同一部门可能有两个或两个以上员工的薪水一样且最高.

SQLSERVER2005中的实现如下:

  SELECT 员工名称,部门ID,薪水 FROM 员工,(SELECT 部门ID AS DepartmentID,MAX(薪水)AS MAX_Salary FROM 员工 GROUP BY 部门ID) AS T
WHERE
员工.部门ID=T.DepartmentID AND 员工.薪水=T.MAX_Salary
ORDER BY 员工.部门ID

======================================
在SQLSERVER2005自带的数据库Pubs中也有一个employee表,但是字段跟上述题目不同,可以这样假设,找出employee 表中各job_id中job_lvl最高的员工的fname.
  --其实现如下:

  SELECT fname,[job_id],[job_lvl] AS MAX_job_lvl_in_job_id
  FROM [employee],
  (SELECT [job_id] AS jobid, MAX([job_lvl])AS mx_lvl FROM [employee] GROUP BY [job_id]) AS T
  WHERE
  [employee].[job_lvl]=T.mx_lvl
  AND
  [employee].[job_id]=T.jobid
  ORDER BY [employee].[job_id]

======================
两个实现的方法是一样的.由于数据量小,所以没有考虑性能的问题.

转载于:https://www.cnblogs.com/ision/archive/2008/10/27/1320590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值