SQL 累積總計


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



網站導引
其他資源


算出累積總計是一個常見的需求,可惜以 SQL 並沒有一個很直接的方式達到這個需求。要以 SQL 算出累積總計,基本上的概念與列出排名類似:第一是先做個表格自我連結 (self join),然後將結果依序列出。在做列出排名時,我們算出每一行之前 (包含那一行本身) 有多少行數;而在做累積總計時,我們則是算出每一行之前 (包含那一行本身) 的總合。

來看看以下的例子。假設我們有以下的表格:

Total_Sales 表格
Name Sales
John 10
Jennifer 15
Stella 20
Sophia 40
Greg 50
Jeff 20

要算出累積總計,我們就鍵入:

SELECT a1.Name, a1.Sales, SUM(a2.Sales) Running_Total
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, a1.Name DESC;

結果:

Name Sales Running_Total
Greg 50 50
Sophia 40 90
Stella 20 110
Jeff 20 130
Jennifer 15 145
John 10 155

在以上的 SQL 語句中, WHERE 子句和 ORDER BY 子句讓我們能夠在有重複值時能夠算出正確的累積總計。

下一頁:SQL 總合百分比

網站導引   |   其他資源