如何从数量和平均价格的总和中得到多列的总和?

How to get total of multiple columns from sum of quantity and average of price?

我正在使用 Ms Access 数据库,有一个名为 "Data Table" 的 table,这个 table 包含的数据是一家企业的已售库存,列是 Item,数量、价格、总计和我使用以下聚合函数对 table 的 select 结果进行分组:

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 的结果正是我希望这个结果通过第一个概念得到的准确值。

你的 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

尝试在查询中使用此 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;

注意:必须给列不同的名称以避免错误。(例如,数量变成总数量)