要算出中位數,我們必須要能夠達成以下幾個目標:

  • 將資料依序排出,並找出每一行資料的排名。
  • 找出『中間』的排名為何。舉例來說,如果總共有 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 行則是列出排名中間的資料值。

下一頁:SQL 累積總計



Copyright © 2017   1keydata.com   版權所有