这段代码是否为此问题提供了正确的输出

时间:2019-10-06 06:13:21

标签: sql ms-access

问的问题是:报告股票的平均收益率超过所有股票的平均收益率的国家

我有一个解决方案,但不确定是否能解决问题。我只收到一个输出,但不确定是否需要多个

SELECT Nations.nationName, 
AVG(dividend/price*100) AS Yield
FROM Shares, Nations
WHERE Shares.nationID=Nations.ID
GROUP BY Nations.nationName
HAVING AVG(dividend/price*100)>
(SELECT AVG(dividend/price*100) FROM Shares);

我的输出仅显示一个结果,我只是想知道这是否应该是结果。
我将提供上一张表格和我的输出Output of code shown here
获取此output of the previous table that is required to get this

所需的上一个表的输出

1 个答案:

答案 0 :(得分:1)

将百分比格式应用于该列时,结果显示时将自动乘以100,即0.25的值将显示为25%;因此,请从您的代码中删除格式或删除100乘数。


我还建议在笛卡尔乘积上使用inner join,即:

select n.nationname, avg(s.dividend/s.price) as yield
from shares s inner join nations n on s.nationid = n.id
group by n.nationname

关于查询的正确性,您可以通过手动或使用单独的查询来计算所有股票的平均收益率,然后确定查询应输出哪些国家/地区,来轻松地进行检查。