如何计算Mysql中一行的中位数?

时间:2017-08-31 19:32:14

标签: mysql sql median

我是sql的新手并且一直在努力研究nan-median,例如,我有一个包含三(百万)行的表,每行有十个数字(或null):

row1: 1,2,3,null,4,5,6,7,8,9
----------
row2: 2,4,null,6,8,2,1,0,9,10
----------
row3: 1,1,1,1,null,7,2,9,9,9
----------

如何获得每个行的 nan-median

2 个答案:

答案 0 :(得分:0)

根据您的问题,如果您要计算10列。 诀窍是避免使用onPropertyChange函数的空值。 使用这个逻辑:

Coalesce

答案 1 :(得分:0)

select(
   (select MAX(cols) from 
    (select TOP 50 PERCENT cols from table ORDER BY cols) )  
        + 
          (select MIN(cols) from 
            (select TOP 50 PERCENT cols from table ORDER BY cols DESC) ) 
     ) / 2  
Median

通过对asc中的行进行排序来选择前50%行的最大值,如果列数为偶数,则应该是中位数。通过对desc中的行进行排序来选择下一个50%行的最小值,以防列数为偶数,这将是中位数,否则最大值(firsthalf + min of secondhalf)/ 2将是中位数。