SQL轮平均值

SQL轮平均值,sql,Sql,我有两张桌子: Evaluation id_student teste ----------- ----- 1 16 1 10 1 20 1 13 Student id name ----------- ------ 1 Jonh 我想为id为1的学生计算列“teste”的平均值。 我用了这个问题: select ROUND(AVG(e.teste),0) from Stu

我有两张桌子:

Evaluation
id_student  teste
----------- -----
1           16
1           10
1           20
1           13

Student
id          name
----------- ------
1           Jonh
我想为id为1的学生计算列“teste”的平均值。 我用了这个问题:

select ROUND(AVG(e.teste),0) from Student s, Evaluation e
where s.id=e.id_student and s.id=1 group by s.nome
该查询返回值14,但如果我转到计算器并执行(16+10+20+13)/4,它会给我14.75,我已经尝试过对数字进行四舍五入,该查询应该返回14中的15。
有人知道我怎么解决这个问题吗?谢谢,对不起我的英语。

问题可能是平均值是用整数算法计算的。您不指定数据库,但有些数据库使用整数算法。这与
round()
无关

试试这个:

select AVG(e.teste)
from Student s join
     Evaluation e
     on s.id = e.id_student 
where s.id = 1;
请注意以下更改:

  • 修复了
    join
    使用正确的显式
    join
    语法的问题
  • 删除了
    round()
  • 删除了分组依据,因为您似乎只想返回一行
这将返回
14
而不是
15
,因为计算是整数59除以整数4返回整数——因此它被截断而不是四舍五入。您可以通过转换为某种十进制/浮点表示来解决这个问题。通常最简单的方法是乘以1.0:

select AVG(e.teste * 1.0)
from Student s join
     Evaluation e
     on s.id = e.id_student 
where s.id = 1;

一旦您正确计算了平均值,您可以应用
round()
,如果您愿意。

我的列teste是一个tinyint。@您在Stackoverf
tinyint中被禁止
仍然使用整数算术尝试您的查询并返回14.7500000,然后我尝试使用round(平均值(例如teste*1.0)、0)并返回15.0000000