Sql 访问查询中的分组加权平均
我试图从这些数据中得出每个客户/产品/城市组合的加权平均费用占销售额的百分比。我不需要子产品的详细程度 我的数据如下所示: +----+-----+----+-------+----+--------+ |客户|产品|城市|子产品|销售|费用占销售额的百分比| +----+-----+----+-------+----+--------+ |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%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 |
完成此操作后,我将有另一个查询,该查询仅获取上一个查询中的“客户”、“产品”、“城市销售”和“新加权平均值”字段。我需要另一个查询,因为我将使用结果作为更大查询的一部分 使用窗口功能可以更轻松地完成此操作,但由于您使用的是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
更改您的表格以适合您的表格名称。我们不会解决您的家庭作业。请给我们你尝试的证据。谢谢!我花了一段时间来破译,因为您代码中的一些语法不起作用,但它现在起作用了!