Mysql 查詢中位數


Mysql查詢平均數和眾數比較簡單;平均數使用AVG函數,眾數分組查詢之后再次統計最大值即可。

但是Mysql查詢中位數就比較蛋疼,我們可以用自定義一個變量來當做行號解決這個問題。

自定義變量@ID當成行號(按照列pos排序):

SET @ID=0;
SELECT @ID:=@ID+1 AS ID , pos FROM alerts_ring_list WHERE 1=1 ORDER BY `pos`

 

最后做個子查詢即可:

SET @ID=0;
SELECT AVG(pos) FROM (
SELECT @ID:=@ID+1 AS ID , pos FROM alerts_ring_list WHERE 1=1 ORDER BY `pos` 
) a WHERE IF (@ID%2=0, ID in (ROUND(@ID/2,0),ROUND(@ID/2,0)+1), ID=ROUND(@ID/2,0))

 

有了行號之后,同理,分位數可以用類似方案跑出,就不贅述了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM