计算每个产品的加权平均值 [关闭]

Posted

技术标签:

【中文标题】计算每个产品的加权平均值 [关闭]【英文标题】:Calculate weighted average per product [closed] 【发布时间】:2017-12-27 11:20:43 【问题描述】:

我有一个与ms-access 计算相关的问题。为了清楚起见,我上传了 Excel 表,我在其中进行了计算。我对加权平均值感兴趣,基本上是如何进行我在访问中的excel中所做的计算。

我在 excel 中的公式是这样的:=SUMIFS($I:$I;$G:$G;G2;$H:$H;H2;$B:$B;B2;$C:$C;C2)/SUMIFS($F:$F;$G:$G;G2;$H:$H;H2;$B:$B;B2;$C:$C;C2) 我得到了每个代码(产品)、每个组、每个月、每年的正确销售额和销量。

我在 excel 中有相同的数据库,我得到了所有额外的计算字段,其中包含 excel 中的收入、月份和年份值。但是我必须知道如何在 access 中重现我的 excel 公式。

图片上每个产品的加权包含上述公式。我需要找到一种方法将此计算包含在访问中,其中数据相同。

Code    Group      Price per t  Volume  MONTH YEAR  Revenue          Weighted 
13753   avangard   12 818,84    108,85  1     2008   1 395 330,73    13 826,51   
13755   super      11 488,83    26,76   1     2008   307 441,09      15 726,96   
14899   super      11 607,86    64,39   1     2008   747 430,11      15 591,86   
13747   super      11 892,57    62,96   1     2008   748 756,21      16 199,30   
13753   avangard   18 134,69    94,65   1     2008   1 716 448,41    13 826,51 

应该如何计算 =SUMIFS(Revenue;CriteriaRange(1)=Month;Criteria(1)=Row2(Month);CriteriaRange(2)=Year;Criteria(2)=Row2(Year);CriteriaRange(3 )=代码;条件(3)=行2(代码))/SUMIFS(卷;条件范围(1)=月;条件(1)=行2(月);条件范围(2)=年;条件(2)=行2(年);CriteriaRange(3)=代码;Criteria(3)=Row2(代码))

如果我们将自己与表格样本中计算的加权分开,仅根据提供的数据,项目 13753 的加权价格 = (1 395 330,73 + 1 716 448,41)/(108,85 + 94,65) = 15 291,30

@Darren Bartrup-Cook。找到了我需要的解决方案。非常感谢您的帮助。这是我用来镜像 SUMIFS 函数的最终 SQL 代码。

SELECT Data.Code,  
             Справочник_групп_продукции.Group, 
             Month([Dated]) AS LMonth, 
             Year([Dated]) AS LYear, 
             SUM([Price per t] * [Volume])/SUM([Volume]) AS Wght_Avg
FROM Справочник_групп_продукции INNER JOIN Data ON Справочник_групп_продукции.[Code] = Data.[Code]
GROUP BY Data.Code, 
                   Month([Dated]), 
                   Year([Dated]), 
                   Справочник_групп_продукции.Group;

https://imgur.com/DyMYnEC

【问题讨论】:

您使用 Access 进行了标记,听起来您需要查询帮助。如果是这样,那么您需要以表格形式向我们展示示例输入数据以及预期的输出。 我在最右边的列(加权)中附加了包含 access 和 excel 数据的文件以及 excel 表中的预期结果。我不知道应该如何通过访问公式或查询来完成。我是个新手。 请注意,您应尽可能避免共享文件,尤其是使用会造成延迟并显示广告的可疑文件共享服务。见how to share tables on SO for ms Access。这是一个面向专业和热情的程序员的网站,希望您对您所发布的主题有一些编程知识。 我上传了带有示例数据的图片。访问也是一样的。 你读过我的链接吗?我们无法导入图片。 【参考方案1】:

将您的表格设置为示例表格(抱歉,看不到图片)和 表格名称为MyTable,您只需执行总和(revenue/volume)并按代码、月份和年份分组。

SELECT      Code
            , Group
            , lMonth
            , lYear
            , ROUND(SUM(Revenue)/SUM(Volume),2) AS Weighted_Avg
FROM        MyTable
GROUP BY    Code
            , Group
            , lMonth
            , lYear

注意:我已将 MonthYear 字段的名称更新为 lMonthlYear 以避免保留字冲突。 不过,我可能会更改我的设计以使用真实日期而不是月份和年份。

NB 2:我还将Group 移动到另一个表,使用Code 作为该表中的主键外键 在主表中。这将消除组名称中的任何拼写错误。 新查询将是:

SELECT      MyTable.Code
            , Group
            , lMonth
            , lYear
            , ROUND(SUM(Revenue)/SUM(Volume),2) AS Weighted_Avg
FROM        MyTable LEFT JOIN GroupTable ON MyTable.Code = GroupTable.Code
GROUP BY    MyTable.Code
            , Group
            , lMonth
            , lYear

编辑:

查看您发布的 SQL,此更新后的 SQL 应该可以工作:

SELECT      Format(Dated,"mmm-yyyy") AS Month_Year
            , Group
            , Data.Code
            , [Price per t]*volume AS Revenue
            , ROUND(SUM([Price per t]*[Volume])/SUM(Volume),2) AS Weighted_Avg
FROM        Справочник_групп_продукции INNER JOIN Data ON Справочник_групп_продукции.Code = Data.Code
GROUP BY    Format(Dated,"mmm-yyyy")
            , Group
            , Data.Code
            , [Price per t]*volume

【讨论】:

感谢您的回答。虽然你能提供一些解释。根据日期(我的表中称为“日期”的字段)处理月/年计算的方法是什么?我有日期。您还可以向我解释一下,我怎样才能使您的代码适应我的查询,因为我使用查询从其他表中查找组。我有以下代码,但是它返回了一个错误。我用代码更新了我的主要帖子。 我认为您的错误来自加权平均值。您的收入计算为[Price per t]*[Volume] AS Revenue,您不能在加权平均计算中将此称为Revenue。使用ROUND(SUM([Price per t]*[Volume])/SUM(Volume),2) AS Weighted_Avg。你的日期可以用Format(dDate,"mmm-yyyy") AS Month_Year 显示——你也需要把它分组。然后,您可以使用 WHERE dDate BETWEEN #2008/01/01# AND #2008/02/01#-1 将时间限制在 2008 年 1 月 此外,您不能在查询中显示 Price per tvolume,因为它会更改 - 代码 13753 的 12 818,84 和 18 134,69 不会组合在一起。同样在您的 SQL 中,您的 FROM 子句末尾有一个分号 (;) - 如果您使用它,它应该放在查询的末尾。

以上是关于计算每个产品的加权平均值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

R:具有分组并且依赖于另一个变量的加权平均值

查找,分组并计算加权平均值?

使用熊猫/数据框计算加权平均值

在 Reporting Services 2008 中计算加权平均值

使用 pandas/dataframe 基于 2 列计算加权平均值

Highcharts构建加权平均值图表