思路
该类题目作者在参考论坛后获得的重点就是:中位数一定同时,大于等于,正序或逆序累加之和
(注:以下题目类型以及部分解答思路均转自力扣(LeetCode),有需要的朋友可自行在力扣网上查找)
给定数字频率的中位数查找
思路:
1.筛选出中位数
2.对中位数求平均值
掌握函数"sum() over()"
select
avg(Number) as 'median'
from
(select
Number,
sum(Frequency) over(order by Number) as shengxu,#求出升序之和,
sum(Frequency) over(order by Number desc) as jiangxu #求出降序之和
from Number
) as N1,
(select sum(Frequency)/2 as t from Numbers)as N2
where shengxu >=t and jiangxuxu >=t
员工薪水中位数
查询出不同公司的员工中位数
思路:
1.按公司分组进行工资排序
2.同样工资排序对应的ID计数累加应大于等于工资排序的正序和逆序的一半
select Id,company,Salary
from
(select
Id,
Company,
Salary,
row_number() over(partition by Company order by Salary) as ranking,
count(Id) over(partition by Company) as cnt
from Employee
) as a
where ranking>=cnt/2 and ranking<=cnt/2+1