Вопрос в следующем: для предыдущего трека вычислите средневзвешенную (вместо средней) среднюю доходность по странам (доходность определяется как дивиденд, деленный на цену, и указывается в процентах). Средневзвешенное значение включает количество акций в качестве веса. Но я понятия не имею, как найти средневзвешенное значение.

У меня уже есть код, который использовался для вычисления среднего выхода в процентах. Но у меня проблемы с вычислением средневзвешенного средневзма. Я говорил с какими-то одноклассниками, и они сказали, что пытаются использовать формулу: сумма (x * w) / сумма (w) где w - вес. Но у меня проблемы с реализацией этого в моем коде

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

В конце концов, средневзвешенное значение должно быть компьютерным, но я просто не знаю, как реализовать это в коде. Материал, на котором мы должны основывать эту проблему, бесполезен.

0
AnalLiquid 5 Окт 2019 в 22:49

1 ответ

Лучший ответ

Я правильно за вами следил, вы должны учесть:

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;

Примечания:

  • всегда предпочитаю явную JOIN s на старой школе JOIN s
  • Кроме того, рекомендуется использовать псевдонимы таблиц, поскольку они делают запрос короче и легче отслеживаются.
1
GMB 6 Окт 2019 в 12:35