当前位置:   article > 正文

sql over函数_使用 SQL 查找员工薪水中位数

sql查询工资接近中位数的5名员工

SQL 是作为开发工程师、数据工程师必须要深入掌握的一项技能。我也一直在提升这部分的能力,从入门到精通。除了阅读一些 SQL 经典书籍,刷题也是一个不错的选择。于是,我将做过的题目与解法,汇总到这里,和大家一起学习。

SQL 练习题系列和「体验碎片」系列一样,会不定期进行更新。

题目:请编写 SQL 查询来查找每个公司的薪水中位数?

42cb100c8ae1247e48b4145128e33a25.png
预期结果:dd081768249a572230632739f58ced31.png

解法: 窗口函数

1.中位数理解:A 和 B 有 6 个员工,按公司分组,薪水排序,中位数在第 3 和第 4 个位置;C 有 5 个员工,按公司分组,薪水排序,中位数在第 3 个位置。总结规律就是假设公司有n个员工,排序只需在 n/2 AND n/2 + 1 即可2.利用窗口函数 row_number()over(),按公司分组,薪水排序,得出 ranking 排序。3.利用窗口函数 count()over(),得出每个公司员工总数 cnt。4.根据总结好的规律取出 ranking>=cnt/2 and ranking<=cnt/2+1 的交集即是符合中位数条件的员工。

select Id,Company,Salaryfrom(select Id,Company,Salary, row_number()over(partition by Company order by Salary)as ranking,count(Id) over(partition by Company)as cntfrom Employee)awhere ranking>=cnt/2 and ranking<=cnt/2+1
e47177da7c00b007f3268e23fa5d656f.png

a2787efdadf7ce448e0829a38c9c998b.png

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

闽ICP备14008679号