LeetCode-SQL-571. 给定数字的频率查询中位数

Create table If Not Exists Numbers (Number int, Frequency int)
Truncate table Numbers
insert into Numbers (Number, Frequency) values ('0', '7')
insert into Numbers (Number, Frequency) values ('1', '1')
insert into Numbers (Number, Frequency) values ('2', '3')
insert into Numbers (Number, Frequency) values ('3', '1')
SELECT avg(Number) as median
FROM
(
SELECT Number,Frequency,
@pre_num:=Number,
@rank_down:=@rank_up as rank_down,
@rank_up:=@rank_down+Frequency as rank_up
FROM
Numbers n, (SELECT @pre_num:=0,@rank_down:=0,@rank_up:=0) t
ORDER BY Number
) A
,
(

SELECT CEIL(SUM(Frequency)/2) as beg, IF(SUM(Frequency) mod 2=0,1,0) as cnt
FROM Numbers

) B
WHERE A.rank_up >=B.beg and A.rank_down <B.beg+B.cnt
发布了145 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37302219/article/details/104968177