sql - 使用虚拟默认列取 SQL 平均值

标签 sql postgresql aggregate-functions

我想取 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/

相关文章:

mysql - 使用 MySQL 触发错误

mysql - 右连接查询返回空值记录

sql - 空结果集的聚合

php - mysql查询性能提升

c# - TSQL + C# : Dynamically changing the Database in use

php - 从跨越多天的数据库中获取事件

postgresql - 如何使用 POSTGRES 使用下划线进行通配符搜索?

postgresql - 在postgresql中连接行

postgresql - 如何从记录中提取值作为 postgresql 中的单独列

mysql - SQL (MySQL) 查询以提取多个时间范围内的聚合