mysql5资源共享

 找回密码
 立即注册
查看: 59|回复: 5

[MS-SQL Server] 【疑难】选出每个部门中总收入最大的员工的sql

[复制链接]

2

主题

5

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2019-7-14 20:48:31 | 显示全部楼层 |阅读模式

3241.png

3241.png


请问各位,选出每个部门中总收入最大的员工,这个sql语句要怎么写
我的思路是先计算每个部门每个员工的总收入
selectdept,pname,sum(income)assincomefromgrouptestGROUPBYdept,pnameORDERBYdept,sincomeDESC
结果如下

3242.png

3242.png


在这个基础上我想到两种方法
1、直接再groupbydept,取分组的第一行,这个方法只针对mysql5.6之前有效,5.6之后做了约束,select的字段必须要出现在groupby的后面
2、把这个结果作为临时表t用嵌套查询,子查询找出最大值,外查询找和最大值且dept相等的,可是临时表要怎么写这种语句啊
回复

使用道具 举报

2

主题

5

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2019-7-14 20:50:01 | 显示全部楼层
第一个截图是这个才对

3243.png

3243.png

回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-15 08:30:56 | 显示全部楼层
8.0版本以前应该可以用变量实现
回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-15 09:02:14 | 显示全部楼层
  1. selectdept,pname,sic
  2. from
  3.         (selectt.*,@i:=@i*(@d=dept)+1iid,@d:=deptdid
  4.         from
  5.                 (selecttb01.dept,pname,sum(income)sic
  6.                 fromtb01
  7.                 groupbydept,pname
  8.                 )t
  9.         crossjoin(select@i:=1,@d:=0)v
  10.         orderbydept,sicdesc
  11.         )p
  12. whereiid=1;
复制代码
  1. dept        pname        sic
  2. 1        tw        6000.0000
  3. 2        李四        7000.0000
复制代码
回复

使用道具 举报

1

主题

6

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2019-7-18 16:16:02 | 显示全部楼层
这样可以吗?
selectdept,pname,sincome
from
(selectdept,pname,sum(income)assincomefromgrouptestGROUPBYdept,pname)asainnerjoin
(selectb.dept,b.max(sincome)assincomefrom(selectdept,pname,max(sum(income))assincomefromgrouptestGROUPBYdept)asbgroupbyb.dept)asc
ona.dept=c.deptanda.sincome=c.sincome
回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-18 22:13:35 | 显示全部楼层
sincome相同会有多行数据吧不过说不定他就要这样结果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-10-23 00:21 , Processed in 0.052814 second(s), 21 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表