【问题标题】:MySQL: displaying averages or nullMySQL:显示平均值或 null
【发布时间】:2020-04-07 02:00:25
【问题描述】:

我有两张表产品和评论,有些产品有评论,有些没有。我想显示产品,对于有评论的产品,我想计算它们的平均评分,如果产品没有评论,平均评分应显示为null

例子:

产品:

| Id | Name |
| 1  | dog  |
| 2  | cat  |

评论:

| Id | Rating|
| 1  | 1     |
| 1  | 5     |

应该显示什么:

| Id | Name | Avg_rating |
| 1  | dog  | 3          |
| 2  | cat  | NULL       | 

如何做到这一点?

【问题讨论】:

  • 左连接然后聚合...

标签: mysql null average


【解决方案1】:

你可以left join,聚合和round()

select p.id, p.name, round(avg(r.rating)) avg_rating
from product p
left join review r on r.id = p.id
group by p.id, p.name

【讨论】:

  • 我试过这个解决方案,但它似乎只给出一个条目及其平均评分,有没有办法输出整个表格?
  • @pikkunen:这会为每个产品(即product 表中的每一行)生成一条记录,这就是您在问题中展示的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2021-06-25
  • 2017-04-12
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多