2015-09-11 29 views
2

我對這個問題非常着迷。這裏是我的全SQLite的查詢的一個精簡版:SQL - 如何按照單獨的行計算對數據進行分組

SELECT OrderID, 
     UnitPrice, 
     Quantity, 
     Discount 
FROM Order Details; 

它返回這樣的:

OrderID UnitPrice Quantity Discount 
10248 14.0  12  0.00 
10248 9.8  10  0.00 
10248 34.8  5  0.00 
10249 18.6  9  0.00 
10249 42.4  40  0.00 
10250 7.7  10  0.00 
10250 42.4  35  0.15 
10250 16.8  15  0.15 
10251 16.8  6   0.05 
10251 15.6  15  0.05 

我想回到一個名爲total price新列。這將是一個計算UnitPrice乘以Quantity減去相應的百分比Discount。然而,複雜的問題在於,新列應按OrderID分組以表示總訂單價格減去個別%折扣。

我一直追着我的尾巴SUM聚合和GROUP BY的幾個小時。總結單位價格和數量是好的,但由於折扣適用於不同的價值,它幾乎就像需要首先計算折扣。折扣不需要單獨應用於每個項目順便說一句。

回答

3

這是假設你使用MySQL。 MS SQL服務器可能需要輕微的變化,但兩者的想法是相同的。

爲了更好地理解這一點,將其分爲兩個階段。

先算行項目價格:

SELECT OrderID, 
     UnitPrice, 
     Quantity, 
     Discount, 
     UnitPrice*Quantity*(1-Discount) total 
     FROM OrderDetails; 

然後用SUM()適用GROUP BY,所以你最終的查詢是:

SELECT OrderID, 
     SUM(UnitPrice*Quantity*(1-Discount)) total 
     FROM OrderDetails 
     GROUP BY OrderID; 
+0

這是件好事,但我的理想尋找一種方式如果可能,在一個查詢中執行此操作。我已經更新了這個問題,讓你更好地理解爲什麼我想避免兩個查詢。 – RDJ

+0

第一個只是一個示例,您可以使用我遵循的第二個查詢 – vhu

+0

。我的錯。第二個例子適用於我的完整查詢。 – RDJ

相關問題