SQL 中位數


SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL 子查詢
SQL EXISTS
SQL CASE
SQL 算排名
SQL 算中位數
SQL 算累積總計
SQL 算總合百分比
SQL 算累積總合百分比



網站導引
其他資源


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

  • 將資料依序排出,並找出每一行資料的排名。
  • 找出『中間』的排名為何。舉例來說,如果總共有 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 1999-2009   1keydata.com.   版權所有