MySQL求中位數(shù)的函數(shù)
什么是中位數(shù)?
中位數(shù)是一組數(shù)據(jù)中處于中間的數(shù)值,即把所有數(shù)據(jù)按從小到大排列,找出正中間的那個(gè)數(shù)。
如何使用MySQL函數(shù)求中位數(shù)?
MySQL提供了兩種函數(shù)用于計(jì)算中位數(shù):
1、AVG()
2、PERCENTILE_CONT()
使用AVG()函數(shù)求中位數(shù)的方法:
首先將需要求中位數(shù)的數(shù)據(jù)按從小到大排序,然后使用AVG()函數(shù)求中間兩個(gè)數(shù)的平均值即可。
如下所示:
SELECT AVG(num) FROM (SELECT @rownum:=@rownum+1 as `row_number`, num FROM (SELECT @rownum:=0) r, (SELECT num FROM table_name ORDER BY num) s) as grouped_table WHERE grouped_table.row_number IN (FLOOR((@rownum+1)/2), FLOOR((@rownum+2)/2));
使用PERCENTILE_CONT()函數(shù)求中位數(shù)的方法:
PERCENTILE_CONT()函數(shù)可以返回一組數(shù)據(jù)的指定百分點(diǎn)處的值,因此可以使用PERCENTILE_CONT(0.5)求一組數(shù)據(jù)的中位數(shù)。
如下所示:
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY num) OVER () FROM table_name;
注意:
AVG()方法適用于數(shù)據(jù)量較小的情況,PERCENTILE_CONT()方法適用于數(shù)據(jù)量較大的情況。
總結(jié)
求一個(gè)數(shù)據(jù)集的中位數(shù)是一個(gè)非?;镜牟僮?。通過MySQL的AVG()和PERCENTILE_CONT()函數(shù),可以輕松地求解一組數(shù)據(jù)的中位數(shù)。