2015-06-24 83 views
3

我正在使用Ms Access數據庫,並且有一個名爲「數據表」的表,並且此表包含的數據是銷售業務的庫存,列是項目,數量,價格,總計,我使用了以下集合函數對於分組該表的選擇結果:如何從數量和價格的平均值中獲得多列總數?

Quantity: =Sum([Quantity])  Result = 23 
Price: =Avg([Price])   Result = 4.5 
Total: =[Quantity] * [Price] Result = 103.5 

的問題是,結果是不一樣的,如果我做了如下計算:

Quantity: =Sum([Quantity])  Result = 23 
Price: GROUP BY [Price]  Result = Different Columns 
Total: =[Quantity] * [Price] Result = Different Columns 
Grand Total: =Sum([Total])  Result = 110 

110的結果是準確的真正的價值我希望這個結果能夠得到第一個概念。

enter image description here

回答

3

Total Formula是從數學的角度錯誤的。或者您的Price Formula

請考慮購買1 item of type ABC for 0€ each併購買2 items of type XYZ for 1€ each。總計應該是2€。但是,如果你計算平均價格,你會得到一個價格(0€ + 1€)/2 = 0.5€(請注意,除以2的是不同項目的數量)。如果您複式,通過項目你買的量(3),您將結束的1.5€ != 2€

價格那是因爲你的平均纔剛剛超過平均每個項目忽視了其數量的價格。

您將不得不清楚average price應代表什麼。它沒有任何真正的意義,應該可能是由總價格本身產生的。我無法想出一個合適的方法來產生平均定價而不隱式計算總價值。它應該只是SUM([Quanity] * [Price])/SUM([Quanity])這正是Total/Quanity

+0

你的意思是沒有適合我的要求的計算解決方案嗎? – MNR

+0

@MuhammadNasirRahimi好的「正確」是這裏的關鍵 - 「價格」代表什麼?它應該是每件物品的平均價格,但平均價格取決於每一件單品/每件其他物品的數量和價格 - 因此所有這些信息都需要用一個公式來計算,這就是我寫的公式最後一段。您可以嘗試使用筆和紙,三種不同的物品和不同的數量來播放場景,然後計算平均價格,總數等等 - 然後繼續並創建一個執行相同操作的查詢。 – luk2302

+0

你應該看到,沒有真正的捷徑達到平均價格。 – luk2302

0

試着在查詢中使用這個SQL語句:

SELECT [Data Table].Item, Sum([Data Table].Quantity) AS [Sum Quantity], Avg([Data Table].Price) AS [AVG Price], Sum([Quantity]*[Price]) AS Total 
FROM [Data Table] 
GROUP BY [Data Table].Item; 

注:不得不把列不同的名稱,以避免錯誤(如:產品數量變得總和量)

+0

源表中沒有'[Total]'字段,我將從中選擇結果 – MNR

+0

對不起,不知道會編輯anwser –