2017-12-27 460 views
-3

我有一個與計算有關的問題。所以要清楚,我上傳了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中。然而,我不得不知道如何重現我的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(收入; CriteriaRange(1)=月;標準(1)=行2(月); CriteriaRange(2)=年份;標準(2)=行2(年) ; CriteriaRange(3)=代碼;標準(3)=行2(編號))/ SUMIFS(音量; CriteriaRange(1)=月;標準(1)=行2(月); CriteriaRange(2)=年份;條件(2 )= Row2(Year); CriteriaRange(3)= Code; Criteria(3)= Row2(Code))

如果我們將自己與表格樣本中的計算加權分開,僅基於所提供的數據, 13753 =(1 395 330,73 + 1 716 448,41)/(108,85 + 94,65)= 15 291,30

@Darren Bartr上庫克。找到我需要的解決方案。非常感謝您的幫助。這是我用來鏡像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

+1

您標記有Access和它的聲音就像你需要查詢幫助一樣。如果是這樣,那麼你需要以表格形式顯示樣本輸入數據以及預期輸出。 –

+0

我附加了access和excel中的數據以及excel表中最右欄(加權)的預期結果。我不知道應該怎麼做,通過訪問公式或查詢。我是訪問中的小菜鳥。 – Andrey

+0

請注意,您應儘可能避免共享文件,特別是使用可延遲並顯示廣告的黑幕文件共享服務。請參閱[如何在MS上共享SO的表格](https://meta.stackoverflow.com/questions/359195/share-a-table-on-stack-overflow-for-easy-import-into-ms-access )。這是一個專業和enthousiast程序員的網站,有關您發佈的主題的一些編程知識預計。 –

回答

1

隨着你的表設置爲示例表(抱歉,不能看到圖片)和 表名作爲MyTable你只需要執行的總和(收入/音量)並按代碼,月份和年份分組。

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 
+0

謝謝你的回答。雖然你能否提供一些解釋。根據日期處理月/年計算的方法是什麼(字段在表中稱爲「過期」)?我有日期。你也可以解釋我,我怎樣才能使你的代碼適應我的查詢,因爲我使用查詢從其他表中查找組。我有以下代碼,但是它返回了一個錯誤。我用代碼更新了我的主帖。 – Andrey

+0

我認爲你的錯誤來自加權平均值。您的收入按照[[每噸價格] * [交易量] AS收入]計算,您不能在加權平均計算中將其稱爲「收入」。使用'ROUND(SUM([每t價格] * [Volume])/ SUM(Volume),2)AS Weighted_Avg'。您的日期可以使用格式(dDate,「mmm-yyyy」)AS Month_Year'顯示 - 您也需要將其分組。然後,您可以通過使用WHERE dDate BETWEEN#2008/01/01#AND#2008/02/01#-1 –

+0

限制到2008年1月您也無法在查詢中顯示「每噸價格」或「交易量」隨着它的變化 - 代碼13753的12 818,84和18 134,69不會組合在一起。同樣在你的SQL中,你在FROM子句的最後有一個分號(';') - 如果你使用它,它應該在查詢結尾。 –