Leetcode 569. 员工薪水中位数

569.png

https://leetcode-cn.com/problems/median-employee-salary/

with tmp as(
select 
case when @company=b.Company then @id:=@id+1 else @id:=0 end+1 id1 
,@company:=b.company company
,b.Id 
,b.Salary
from (select @id:=0,@company:='') as init,(select * from Employee order by Company,Salary) b
)

select a.Id,a.company,a.Salary from(
select b.Id,a.company,b.Salary from (
select company,floor((max(id1)-min(id1))/2)+1 id1
from tmp 
group by company
)a left join tmp b on a.company=b.company and a.id1=b.id1
union all
select b.Id,a.company,b.Salary from (
select company,case when (max(id1)-min(id1)+1)%2=0 then floor((max(id1)-min(id1)+1)/2)+1 else null end id1
from tmp 
group by company
)a left join tmp b on a.company=b.company and a.id1=b.id1
where a.id1 is not null
)a order by a.Id,a.Salary

569.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容