问的问题是:报告股票的平均收益率超过所有股票的平均收益率的国家
我有一个解决方案,但不确定是否能解决问题。我只收到一个输出,但不确定是否需要多个
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);
我的输出仅显示一个结果,我只是想知道这是否应该是结果。
我将提供上一张表格和我的输出
获取此
答案 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
关于查询的正确性,您可以通过手动或使用单独的查询来计算所有股票的平均收益率,然后确定查询应输出哪些国家/地区,来轻松地进行检查。