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

时间:2015-06-24 08:59:51

标签: sql ms-access calculated-columns

我正在使用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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;

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