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))
有了行號之后,同理,分位數可以用類似方案跑出,就不贅述了。