mysql - MySQL AVG()函数返回错误值

标签 mysql sql database database-design mysql-workbench

我正在尝试计算所选列的平均值。
如果我运行此代码:

SELECT answer_value
FROM survey$question$answer JOIN answer
ON survey$question$answer.answer_letter = answer.answer_letter
WHERE survey$question$answer.survey_id = 12;


我得到这个(这些值是正确的):
enter image description here

但是,当我运行此命令时:

SELECT AVG(answer_value)
FROM survey$question$answer JOIN answer
ON survey$question$answer.answer_letter = answer.answer_letter
WHERE survey$question$answer.survey_id = 12;


我得到这个:
enter image description here

我得到2的平均值,而5、5和3的正确平均值是4.33
为什么会这样呢?

另一个例子。这段代码在这里:

SELECT answer_value
FROM survey$question$answer JOIN answer
ON survey$question$answer.answer_letter = answer.answer_letter
WHERE survey$question$answer.survey_id = 6;


显示给我:
enter image description here

但是,当我尝试使用此代码计算平均值时:

SELECT AVG(answer_value)
FROM survey$question$answer JOIN answer
ON survey$question$answer.answer_letter = answer.answer_letter
WHERE survey$question$answer.survey_id = 6;


我得到这个:
enter image description here

3、2和1的平均值等于2,而不是9.33

救命?
谢谢!

最佳答案

我认为您错了,您确实在以下其他地方犯了错误,请检查表列的数据类型

select avg( c) from (select 5 as c
union all
select 5
union all
select 3
) a

 c
4.3333


online demo

关于mysql - MySQL AVG()函数返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55712877/

相关文章:

mysql - 替换 SQL 中 STRING 列的最后一个字符

java - 在 JDBI dropwizard 中使用自定义 where 条件

java - 如果不存在新的 Java DB,如何创建?

database - 使用从数据库加载的 ResourceBundle 条目在 JSF 中进行国际化

mysql - 在 MySQL 中更改表引擎

mysql - 使用 native MySQL 函数查找一个集合中不存在于另一个集合中的元素

mysql - 修复 MySQL .SQL 脚本失败 - INSERT 有 FK 列约束

sql - 如何从postgres中的查询中提取小时数

mysql - 加入时间戳范围

mysql - SQL 分隔大字段以加快查询速度