Может ли кто-нибудь объяснить мне, почему функция AVG () дает мне средневзвешенное значение в моем коде?
SELECT s.stud_id, s.country, SUM(e.paid) AS totalpaid
INTO #totalpaid
FROM oc.students AS s
JOIN oc.enrollment AS e ON s.stud_id = e.stud_id
GROUP BY s.country ,s.stud_id;
SELECT DISTINCT s.country, ROUND(AVG(t.totalpaid) OVER (PARTITION BY s.country),0) AS avg_country
FROM #totalpaid t
JOIN oc.students s ON t.stud_id = s.stud_id
JOIN oc.enrollment e ON e.stud_id = s.stud_id;
Например, в случае Мальты Студент12 посетил 1 курс и заплатил 45 евро, Студент 837 посетил 7 курсов и заплатил в общей сложности 294 евро. Я хотел бы иметь простой расчет (45 + 294) / 2 для среднего, однако система рассчитывает как (1 * 45 + 7 * 294) / 8. Что я делаю не так?