Sql 在查询中查找加权平均值
问题是:在前一条轨道上,计算加权平均收益率,而不是按国家平均收益率。收益率定义为股息除以价格,并以百分比报告。加权平均数包括股票数量作为权重。 但我不知道如何找到加权平均数 我已经有一些代码用来计算平均收益率(以百分比为单位)。但我在计算加权平均数时遇到了麻烦。我和一些同学谈过,他们说他们正在尝试使用这个公式:sumx*w/sumw,其中w是重量。 但我在代码中实现这一点时遇到了困难Sql 在查询中查找加权平均值,sql,ms-access,Sql,Ms Access,问题是:在前一条轨道上,计算加权平均收益率,而不是按国家平均收益率。收益率定义为股息除以价格,并以百分比报告。加权平均数包括股票数量作为权重。 但我不知道如何找到加权平均数 我已经有一些代码用来计算平均收益率(以百分比为单位)。但我在计算加权平均数时遇到了麻烦。我和一些同学谈过,他们说他们正在尝试使用这个公式:sumx*w/sumw,其中w是重量。 但我在代码中实现这一点时遇到了困难 SELECT Nations.nationName, AVG(dividend/price) AS Yield
SELECT Nations.nationName,
AVG(dividend/price) AS Yield
FROM Shares, Nations
WHERE Shares.nationID=Nations.ID
GROUP BY Nations.nationName;
最后,加权平均应该是计算机,但我不知道如何在代码中实现它。我们应该根据的材料对这个问题没有帮助。我正确地跟踪了您,您应该考虑:
SELECT
n.nationName,
SUM(s.quantity * s.dividend / s.price)/IIF(SUM(s.quantity) = 0, NULL, SUM(s.quantity)) AS weighted_yield
FROM Shares s
INNER JOIN Nations n ON s.nationID = n.ID
GROUP BY n.nationName;
注:
总是喜欢显式连接而不是老式的隐式连接
此外,使用表别名是一种最佳做法,因为它们使查询更短,更容易遵循
非常感谢你的工作。但我想知道为什么您选择了数量、股息和价格这三个属性来计算加权平均值。@AnaLiquid:股息和价格已经存在于您的查询中,您的问题提到您想使用数量作为权重,所以…@GMB MS Access不支持nullif不幸的是。@LeeMac:是的,正确,我将查询改为使用IIF。