mysql--求中位数

第一种求中位数方法:

/*
    第一步:添加一个正序和反序
    第二步:当列表数目为奇数的时候,列表选出的情况,当列表为偶数的时候列表的情况
    第三步:统筹奇数和偶数时中位数
*/
select sum(Math)/count(*) as midean
from
(
select Math, desc_Math, asc_Math 
from
(
select *, row_number() over (order by Math desc)  as desc_Math,
          row_number() over (order by Math asc)  as asc_Math
from s448
)as order_table
where asc_Math in (desc_Math, desc_Math+1, desc_Math-1)) as media_number ;

第二种求中位数方法:

/*
    第一步:为数据添加索引
    第二步:利用索引找出数据的中位数
*/
set @rowidx := -1;    -- 声明变量
select avg(n.Math) from 
(select @rowidx := @rowidx + 1 as rowidx, Math from s448 order by Math) as n 
where n.rowidx in (floor(@rowidx/2), ceil(@rowidx/2));
原文地址:https://www.cnblogs.com/mysterygust/p/15186122.html