データベースに次のテーブルがあります
Name | total_stars | total_reviews
Item A 27 7
Item B 36 9
Item C 27 7
Item D 30 6
Item E 0 0
Item F 0 0
Item F 15 3
私はこの記事を見ていて、postgresql データベースにベイジアンランキングを実装しようとしていました。
ランクに与えられた式は
br = ( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) /
(avg_num_votes + this_num_votes)
どこ:
- avg_num_votes: num_votes>0 を持つすべての項目の平均投票数
- avg_rating: 各アイテムの平均評価 (これも num_votes>0 のもの)
- this_num_votes: このアイテムの投票数
- this_rating: このアイテムの評価
これは私が思いついたクエリですが、機能していません:
with avg_num_votes as (
select AVG(total_reviews)
from business
where total_reviews != 0),
avg_rating as (
select AVG(total_stars/total_reviews)
from business
where total_reviews != 0)
select * from business
order by ((avg_num_votes * avg_rating) + (total_stars)) / (avg_num_votes + total_reviews);
私は得ています:ERROR: column "avg_num_votes" does not exist