571. 给定数字的频率查询中位数 难度:困难

在这里插入图片描述
来源:力扣(LeetCode)

 

select number as median from (
select number , @r:=@r+1 as st,@r:=@r+frequency-1 as ed ,b.cnt  ,if( cnt mod 2 = 0 , cnt div 2, (cnt div 2 )+1) as median_st_index , (cnt div 2 )+1 as median_ed_index
from numbers,
(SELECT  sum(frequency) as cnt FROM `numbers` ) b,
(select @r:=0) c
order by number
) t 
where  (st <= median_st_index and median_st_index<= ed) or (st<=median_ed_index and median_ed_index<= ed)

 

posted @ 2020-04-26 15:29  漫漫长路远  阅读(159)  评论(0)    收藏  举报