Это не средневзвешенное значение. Звучит так, как будто вы пытаетесь достичь среднего по Байесу , где вы штрафуете небольшой набор, смещая наблюдаемое среднее к некоторому мета-среднему. Не существует встроенного способа сделать это в PostgreSQL.
. Вычислять сумму и рассчитывать отдельно, а затем использовать некоторый механизм для реализации штрафа на основе этих значений. Вы можете сделать это на клиенте или написать внешний запрос, который берет результаты подзапроса и применяет формулу.
select id, (the_sum + 10* <metaaveerage>)/(the_count+10) from (
SELECT tv.id, sum(ut.rating) as the_sum, count(ut.rating) as the_count FROM user_tvshow AS ut
LEFT JOIN tvshows AS tv ON tv.id = ut.tvshow
WHERE "user" IN (
SELECT follows FROM user_follows WHERE "user" = 1 -- List of users the current user follows
) AND rating IS NOT NULL GROUP BY tv.id
) foobar
Как вы решаете, какие значения подключать для 10
и для <metaaverage>
это вопросы статистики, а не программирования.