MySQL取百分位數怎麼寫語句?


MySQL取百分位數,首先,我們需要了解4分位數。所謂四分位數是指統計學上把數值由小到大排列並分成四等份,處於各個分隔點的值就是我們稱的四分位數。將這一概念擴展到百分位,就是將數據劃分成100等份,各分隔點就是對應的百分位值。因此,利用Mysql求百分位數的難點在於:第一,分位數的計算公式;第二、記錄的位置如何求。

百分數計算公式

如果數據列是奇數,則分位數是數列中的某個值,如果是偶數,則需要根據前後兩項的差然後乘以小數得到相應的值。

  • 序列數總體為奇數

以下列的一串數字為例:14,15,16,16,17,18,19,19,20,21,21,22,22,23,24,24,25,29,30,用n代表總體的單位數,用Q1、Q2、Q3表示第一個、第二個和第三個四分位數,則根據中位數的計算公式:

Q1位置n+1/4=5,則Q1=17,從小到大排序後的第5個數字,依此類推可以求得其它幾個數

  • 序列數總體為偶數

如果序列數為偶數,比如現在在上例的基礎上添加一個數字31,此時總體有20個數字。由於總體的數量有變化,Q1的位置也發生變化變為5.25,此時Q1=17+(18-17)*0.25=17.25。

MySQL求解百分位數

我們可以先定義一個變數,用於表示參與排序的欄位值的順序,在mysql顯示出來的就是自然數的自增效果。

  • set @row_num = 0;

  • 計算百分位數所在位置

因為row_num會一直自增所以需要將得到的排序數據存儲到一張表或者臨時表中,這樣可以根據得到的位置,結合分位數的計算方法就可以得到相應的值。


推薦閱讀:

令人迷惑的SQL查詢結果
Spark Sql 連接mysql
MySQL慢日誌線上問題分析及功能優化
MySQL 5.7版本XA事務若干bug分析
mysql和oracle之間有什麼區別?

TAG:MySQL | 計算機行業 | 生活 |