• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
目标驱动者
目标........努力........生活.........
博客园    首页    新随笔    联系   管理    订阅  订阅

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

一个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]

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

posted @ 2008-10-27 16:55  IsionWu  阅读(4994)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3