访问 SQL 查询 - 总计算的百分比
Access SQL query - Percentage of Total calculation
在 Access SQL 中,我正在尝试获得占总数百分比的看似简单的任务。有 3 家商品商店(Sears、kmart 和 Mktpl),在任何给定的一周内,我希望根据销售额余额计算它们各自占总数的百分比(所有这些都可以使用一个 table - tbl_BUChannelReporting).
例如第 5 周的虚拟号码 - Sears 7000、kmart 2500、mktpl 2000
将返回以下比率:sears 61%、kmart 22%、mktpl 17%
我最初试图创建一个子查询,但没有取得任何进展,所以我实际上是在尝试将第 5 周的其中一家商品商店的销售额除以第 5 周所有 3 家商品商店的销售额总和. 以下是我的查询,它给我 "cannot have aggregate function in expression" 错误:
SELECT FY, FW, Rept_Chnl, BU_NM, Order_Store, Item_Store, CDBL(
SUM(IIF([item_store]="sears", revenue, IIF([item_store]="kmart", revenue, IIF([item_store]="mktpl", revenue,0)))) /
(SUM(IIF([item_store]="sears",revenue,0)+SUM(IIF([item_store]="kmart",revenue,0)+SUM(IIF([item_store]="mktpl",revenue,0))))))
AS Ratios
FROM tbl_BUChannelReporting
WHERE FY = "2017"
AND FW = 5
GROUP BY FY, FW, Rept_Chnl, BU_NM, Order_Store, item_store
提前感谢大家抽出宝贵时间。这是我第一次 post 来这里,我认为自己只是一个新手,渴望向最好的人学习,看看结果如何。
保重!
-D
考虑使用两个派生表或保存的聚合查询:一个基于 Item_Store 分组,另一个不包括 Item_Store 来求和商店的总收入。所有其他分组(FY、FW、Rept_Chnl、BU_NM, Order_Store) 保留在两者中并用于连接两者。然后在外部查询中,计算百分比。
SELECT i.*, CDbl(i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store,
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store) As i
INNER JOIN
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store) As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store
或者将上面的每个 SELECT
语句保存为自己的查询并在下面引用:
SELECT i.*, (i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
Indiv_Item_StoreAggQ As i
INNER JOIN
All_Item_StoreAggQ As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store
在 Access SQL 中,我正在尝试获得占总数百分比的看似简单的任务。有 3 家商品商店(Sears、kmart 和 Mktpl),在任何给定的一周内,我希望根据销售额余额计算它们各自占总数的百分比(所有这些都可以使用一个 table - tbl_BUChannelReporting).
例如第 5 周的虚拟号码 - Sears 7000、kmart 2500、mktpl 2000 将返回以下比率:sears 61%、kmart 22%、mktpl 17%
我最初试图创建一个子查询,但没有取得任何进展,所以我实际上是在尝试将第 5 周的其中一家商品商店的销售额除以第 5 周所有 3 家商品商店的销售额总和. 以下是我的查询,它给我 "cannot have aggregate function in expression" 错误:
SELECT FY, FW, Rept_Chnl, BU_NM, Order_Store, Item_Store, CDBL(
SUM(IIF([item_store]="sears", revenue, IIF([item_store]="kmart", revenue, IIF([item_store]="mktpl", revenue,0)))) /
(SUM(IIF([item_store]="sears",revenue,0)+SUM(IIF([item_store]="kmart",revenue,0)+SUM(IIF([item_store]="mktpl",revenue,0))))))
AS Ratios
FROM tbl_BUChannelReporting
WHERE FY = "2017"
AND FW = 5
GROUP BY FY, FW, Rept_Chnl, BU_NM, Order_Store, item_store
提前感谢大家抽出宝贵时间。这是我第一次 post 来这里,我认为自己只是一个新手,渴望向最好的人学习,看看结果如何。
保重!
-D
考虑使用两个派生表或保存的聚合查询:一个基于 Item_Store 分组,另一个不包括 Item_Store 来求和商店的总收入。所有其他分组(FY、FW、Rept_Chnl、BU_NM, Order_Store) 保留在两者中并用于连接两者。然后在外部查询中,计算百分比。
SELECT i.*, CDbl(i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store,
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store, t.Item_Store) As i
INNER JOIN
(SELECT t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store
SUM(t.Revenue) As Store_Revenue
FROM tbl_BUChannelReporting t
WHERE t.FY = '2017' AND t.FW = 5
GROUP BY t.FY, t.FW, t.Rept_Chnl, t.BU_NM, t.Order_Store) As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store
或者将上面的每个 SELECT
语句保存为自己的查询并在下面引用:
SELECT i.*, (i.Store_Revenue / a.Store_Revenue) As Ratios
FROM
Indiv_Item_StoreAggQ As i
INNER JOIN
All_Item_StoreAggQ As a
ON i.FY = a.FY AND i.FW = a.FW AND i.Rept_Chnl = a.Rept_Chnl
AND i.BU_NM = a.BU_NM AND i.Order_Store = a.Order_Store