mysql - SQL - 获取所有一对多关系的平均分数

标签 mysql sql join

问题和分数之间存在一对多关系。我的表格设置是:

Table Question:
    id int auto_increment primary key,
    question varchar(255);

Table Score:
    id int auto_increment primary key,
    score float,
    question_id int foreign key

对于每个问题,我想找到平均分,所以我需要问题表中的question,我需要计算平均分。

我试过:

SELECT Question.question, SUM(Score.score)/COUNT(Score.question_id) FROM `Question` INNER JOIN `Score` WHERE Question.id = Score.question_id;

但它只返回第一个问题和平均值。您可以在 my SQLFiddle link 看到它的运行情况。 .

我需要修改什么才能返回所有问题及其平均分数?

最佳答案

你忘了添加 GROUP BY 子句,

SELECT ...
FROM...
GROUP BY Question.question

你也可以选择使用 AVG()

SELECT  Question.question, 
        AVG(Score.score) AS average  
FROM    Question INNER JOIN Score 
            ON Question.id = Score.question_id
GROUP   BY Question.question

关于mysql - SQL - 获取所有一对多关系的平均分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868152/

相关文章:

php - 未正确检索数据库查询

MySQL 查询 : Using UNION and getting row number as part of SELECT

mysql - 奇怪的 MySql 连接行为

mysql - 有没有办法根据查询中修改的列来联接两个表?

mysql - Sequelize 错误 : you must use the 'as' keyword to specify the alias of the association you want to include. - node.js

php - 从 Symfony 1.4 任务记录 Doctrine 查询

java - JDBC PreparedStatement 奇怪的行为

sql - 如何避免在很多列上分组

sql - Oracle ROUND 函数返回错误值

mysql - 排名排行榜 - MySQL