Я пытаюсь написать оператор SELECT, который усредняет необработанный счет игрока, вычитает необработанный счет из 200 и затем умножает его на 90% для расчета гандикапа игрока.
Этот кодкажется, что применяет вычисления правильно, но создает много разных средних значений для каждого игрока.
SELECT BOWLERID "Bowler ID", b.BOWLERFIRSTNAME || ' ' ||
b.BOWLERLASTNAME "Bowler Name",
AVG(bs.HANDICAPSCORE)+ -200 * 0.90 "Handicap"
FROM BOWLER_SCORES bs
JOIN BOWLERS b USING (BOWLERID)
GROUP BY BOWLERID, b.BOWLERFIRSTNAME, b.BOWLERLASTNAME,
bs.HANDICAPSCORE
ORDER BY bs.HANDICAPSCORE DESC;
Я думаю, что это проблема с настройкой соединения моего стола, но я не могу точно определить это.
Я очень новичок в SQL, поэтому любые советы и указатели очень ценятся.
РЕДАКТИРОВАТЬ:
Поэтому при удалении bs.HANDICAPSCORE и изменении ORDER BY на "Handicap", ятеперь видим, что средние расчеты неверны.Кроме того, мне нужно округлить до десятичных точек.
ОБНОВЛЕННЫЙ КОД:
SELECT BOWLERID "Bowler ID", b.BOWLERFIRSTNAME || ' ' ||
b.BOWLERLASTNAME "Bowler Name",
AVG(bs.HANDICAPSCORE)+ -200 * 0.90 "Handicap"
FROM BOWLER_SCORES bs
JOIN BOWLERS b USING (BOWLERID)
GROUP BY BOWLERID, b.BOWLERFIRSTNAME, b.BOWLERLASTNAME
ORDER BY "Handicap" DESC;
Правильно ли настроен оператор AVG?