赞
踩
SQL 是作为开发工程师、数据工程师必须要深入掌握的一项技能。我也一直在提升这部分的能力,从入门到精通。除了阅读一些 SQL 经典书籍,刷题也是一个不错的选择。于是,我将做过的题目与解法,汇总到这里,和大家一起学习。
SQL 练习题系列和「体验碎片」系列一样,会不定期进行更新。
预期结果:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。