mysql 力扣,569.员工薪水中位数

569.员工薪水中位数
https://leetcode-cn.com/problems/median-employee-salary/
在这里插入图片描述
参考答案
在这里插入图片描述

# 先组内排序,命名为sc,这里用了库函数,也可以自己写
#这题的中位数是偶数个就是中间两个,奇数个就是中间一个,(题目要求)
#然后看where子句,三个分别是每个公司和如果是奇数个就拿中间一个,偶数个就拿个数除以2的,偶数个就拿个数除以2加1的
#然后根据公司和组内排名就把中无数拿出来了。

with sc as
    (select *,row_number() over(partition by Company  order by Salary ) 'rankx',
    count(Salary)over(partition by Company ) people
    from employee)
    
select Id, Company,Salary from sc
where (Company,rankx) in (
    select Company,floor((people+1)/2) 'rankx'
    from sc where people%2=1
    union 
    select Company,floor((people+1)/2) 'rankx'
    from sc where people%2=0
    union
    select Company,floor((people+1)/2)+1 'rankx'
    from sc where people%2=0)

猜你喜欢

转载自blog.csdn.net/qq_42232193/article/details/106797684
今日推荐