首页 > 解决方案 > 在 SQL 中,我可以得到一组数字的平均值,但只针对那些具有匹配标签的记录?

问题描述

我有两个 MySQL 表,一个包含有关项目的信息(称为项目),另一个包含这些项目的客户评论(称为评论)。

项目包含标签作为基于文本的主键,以及一些其他属性。评论包含一个自动递增的评论 ID,以及作为外键的项目标签,然后是 5 分的评论分数。

例如:

Item
| LABEL | INFO_1 | INFO_2 | etc|
  book    fict     2010
  book2   nonfic   1997
...

Review
| REVIEWID | LABEL | SCORE |
  001        book     4
  002        book     5
  003        book2    5

我想创建一个视图,以便我可以看到每个项目的平均评论分数。我试图选择

AVG(review.score) AS avgscore 

但这会返回系统中每条评论的相同平均值,而不是按项目标签分隔。我是否需要进行某种加入或添加更多参数?对不起,如果这是一个愚蠢的问题。我对 MySQL 并不是很流利。

我想要的结果如下所示:

AverageScoreView
| LABEL | AVGSCORE |
  book      4.5
  book2      5

标签: mysqlsqldatabaseaverage

解决方案


您可以使用:

   SELECT LABEL, AVG(SCORE) AS AVGSCORE
    FROM Review
    GROUP BY LABEL

推荐阅读