我想取 reviews.rating 的平均值,但应用默认评分 4。用户将以 4 开始评分,然后如果有人给他们留下 3,他们的评分将计算为 3.5。
目前,我只使用一个简单的 AVG:
SELECT AVG("reviews"."rating") AS average_rating
FROM "reviews"
WHERE "reviews"."user_id" = :user_id
有没有办法可以选择一个虚拟值 4,然后将其包含在 AVG 计算中?如果重要的话,我正在使用 Rails 和 PG,但我想将计算保留在数据库中以提高速度(而不是提取所有数据并在 Ruby 中计算平均值)。
最佳答案
你可以自己计算平均值:
SELECT (sum(rating)+ 4.0)/(count(rating)+ 1) AS average_rating
FROM reviews
WHERE ...
关于sql - 使用虚拟默认列取 SQL 平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37820451/