【发布时间】:2013-03-11 19:43:38
【问题描述】:
我有一个餐厅评分和评论数据库,每家餐厅可能有 1 到 1000 条评论。
我首先尝试找出哪些餐厅的评论中包含“taco”一词的评分最多为 4+,然后我使用以下代码对其进行了处理:
select id, count(id) from test where (comment like '%taco%') AND rating >= 3 group by id order by count(id) DESC;
因此,例如,如果餐厅 X 有 30 4 条以上的评分评论,其中包含“taco”,我会为该行获得“X|30”。
我想添加两个附加功能:
- 列出每家餐厅的评论总数(无条件)
- 对餐厅的所有评论(包括“taco”)给出平均评分。
如果餐厅 X 总共有 150 条评论,其中 30 条评分为 4+ 并且包括“taco”,而这 30 条评论的平均评分为 2.5,我会得到:
'X|30|150|2.5|'
我如何得到这个结果?
【问题讨论】:
-
4+ 评分的评论的平均值怎么可能是 2.5?
-
不应该有 4+ 个评分是
ratings >= 4? -
很好,呸。我的意思是包含“taco”在内的所有餐厅评论的平均评分是 2.5。所以有 30 条 4+ 评分的评论和很多较低的评论。