当前位置:   article > 正文

LeetcodeSQL:员工薪水中位数(parition窗口实战)_sql 薪水中位数

sql 薪水中位数

在这里插入图片描述
思路:
找中位数,要用partition分窗口按公司找,然后orderby排序
用count + partition找出公司的总数
然后找到满足ranking和cnt的关系的指定位置

sql

# Write your MySQL query statement below
# partition 分区很有用,也叫窗口函数
select Id, Company, Salary
from
(
    select Id, Company, Salary,
    row_number() over(partition by Company order by Salary) ranking, # 这里按照公司分组排序取排名
    count(Id) over(partition by Company) cnt # 这里统计每个公司的总人数
    from Employee
) a
where a.ranking >= a.cnt / 2 and a.ranking <= a.cnt / 2 + 1
# 偶数输出中间两个,奇数输出中间一个
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

总结:
窗口函数partition写法:
row_number()这种窗口特有 + over (partition by 属性 order by 属性)
聚合函数 over (parition by 属性)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/423588
推荐阅读
相关标签
  

闽ICP备14008679号