Sql 访问查询中的分组加权平均

Sql 访问查询中的分组加权平均,sql,ms-access,average,weighted,Sql,Ms Access,Average,Weighted,我试图从这些数据中得出每个客户/产品/城市组合的加权平均费用占销售额的百分比。我不需要子产品的详细程度 我的数据如下所示: +----+-----+----+-------+----+--------+ |客户|产品|城市|子产品|销售|费用占销售额的百分比| +----+-----+----+-------+----+--------+ |a | b | b | c | 1000 | 1%| |a | b | b | d | 2000 | 2%| |c | c | b | c | 3000 |

我试图从这些数据中得出每个客户/产品/城市组合的加权平均费用占销售额的百分比。我不需要子产品的详细程度

我的数据如下所示:

+----+-----+----+-------+----+--------+ |客户|产品|城市|子产品|销售|费用占销售额的百分比| +----+-----+----+-------+----+--------+ |a | b | b | c | 1000 | 1%| |a | b | b | d | 2000 | 2%| |c | c | b | c | 3000 | 3%| |d | c | b | c | 4000 | 4%| +----+-----+----+-------+----+--------+ 我想计算每个客户和产品组合的加权平均费用%。i、 e.对于客户“a”、产品“b”、城市“b”:销售费用百分比为1000/3000*1%+2000/3000*2%


完成此操作后,我将有另一个查询,该查询仅获取上一个查询中的“客户”、“产品”、“城市销售”和“新加权平均值”字段。我需要另一个查询,因为我将使用结果作为更大查询的一部分

使用窗口功能可以更轻松地完成此操作,但由于您使用的是ms access。。。您可以在子查询中计算每个客户/产品/城市的销售小计,然后加入原始表:

SELECT 
    t.client, t.product, t.city, SUM(t.sales * t.fee / t1.sales) res
FROM 
    mytable t
    INNER JOIN (
        SELECT client, product, city, SUM(sales) sales
        FROM mytable
        GROUP BY client, product, city
    ) t1 
        ON  t1.client = t.client
        AND t1.product = t.product
        AND t1.city = t.city
GROUP BY t.client, t.product, t.city
这与您的示例数据一起返回:

| client | product | city | res                             |
| ------ | ------- | ---- | ------------------------------- |
| a      | b       | b    | 0.016666666294137638            |
| c      | c       | b    | 0.029999999329447746            |
| d      | c       | b    | 0.03999999910593033             |

作为子查询的一部分,您可以计算总销售额和费用值,然后使用结果值进行除法,例如:

选择 q、 客户, q、 产品,, q、 城市, q、 费用/q.作为加权费用的总销售额 从…起 选择 t、 客户, t、 产品,, t、 城市, 合计销售额作为总销售额, 总销售额*t.[占销售额的百分比]作为费用 从你的桌子上 按t.客户、t.产品、t.城市分组 Q
更改您的表格以适合您的表格名称。

我们不会解决您的家庭作业。请给我们你尝试的证据。谢谢!我花了一段时间来破译,因为您代码中的一些语法不起作用,但它现在起作用了!