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之間有什麼區別?