赞
踩
来源:力扣(LeetCode)
1# 去掉Month
最大值,当然,只是增加一列判断值;令Month
倒序,和前一个id
对比,如果相同则为1,不同为0
select e.*,@i=(@i:=Id) as jude from Employee e,(select @i:=0) a order by Id,`Month` desc
2# 只取Jude=1
的值,然后进行累加
select add_jude.*, case when @k=@k:=Id then @j:=@j+Salary else @j:=Salary end as sa from(
select e.*,@i=(@i:=Id) as jude
from Employee e,(select @i:=0) a
order by Id,Month desc
) add_jude,(select @j:=0,@k:=0) a where jude=1 order by Id,`Month
3# 取需要的值,然后排序
select Id,`Month`,sa as Salary
from(
select add_jude.*, case when @k=@k:=Id then @j:=@j+Salary else @j:=Salary end as sa
from(
select e.*,@i=(@i:=Id) as jude
from Employee e,(select @i:=0) a
order by Id,`Month` desc) add_jude,(select @j:=0,@k:=0) a
where jude=1
order by Id,`Month`)add_rank
order by Id,`Month` desc
测试竟然没通过,看了一下,他的答案明显错了,注意红框内的数字,90+60=130?
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。