У меня есть таблица рейтинги:Найти среднее поле нескольких строк
part rating numReviews
---- ------ ----------
A1 100 5
A1 50 2
A2 90 4
A3 100 4
Мне нужно найти средний рейтинг для каждой части. В приведенном выше примере A2 составляет 90, а A3 - 100, поскольку они являются одиночными линиями. Легко.
Однако часть A1 является несколько строк, поэтому мне нужно сделать рейтинг * numReviews для каждой строки затем разделить по общего numReviews
Возможно ли это? Это то, что я пытаюсь (Microsoft SQL):
select part,
cast((AVG((rating * numReviews)/SUM(numReviews))) as decimal(5,2)) as rating_average
from tableName group by part order by part
Я получаю следующее сообщение об ошибке:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.