要算出中位數,我們必須要能夠達成以下幾個目標:
- 將資料依序排出,並找出每一行資料的排名。
- 找出『中間』的排名為何。舉例來說,如果總共有 9 筆資料,那中間排名就是 5 (有 4 筆資料比第 5 筆資料大,有 4 筆資料比第 5 筆資料小)。
- 找出中間排名資料的值。
來看看以下的例子。假設我們有以下的表格:
Total_Sales 表格
Name | Sales |
John | 10 |
Jennifer | 15 |
Stella | 20 |
Sophia | 40 |
Greg | 50 |
Jeff | 20 |
要找出中位數,我們就鍵入:
SELECT Sales Median FROM
(SELECT a1.Name, a1.Sales, COUNT(a1.Sales) Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales OR (a1.Sales=a2.Sales AND a1.Name <= a2.Name)
group by a1.Name, a1.Sales
order by a1.Sales desc) a3
WHERE Rank = (SELECT (COUNT(*)+1) DIV 2 FROM Total_Sales);
結果:
Median |
20 |
讀者將會發現,第 2 行到第 6 行是跟產生 排名 的語句完全一樣。第 7 行則是算出中間的排名。DIV 是在 MySQL 中算出商的方式。在不同的資料庫中會有不同的方式求商。第 1 行則是列出排名中間的資料值。