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)