SQL聚合函数where where

时间:2018-04-24 16:34:03

标签: mysql sql

我必须显示平均分数应该大于80的学生的平均分数。这是我的代码:

select 
    student_id, 
    round(avg(value), 2) as avg_mark 
from 
    mark 
where 
    avg_mark > 80 
group by 
    student_id 
order by 
    avg_mark;

有一个编译错误,指出avg_marks子句中的where是无效的标识符。

2 个答案:

答案 0 :(得分:0)

您需要使用HAVING来过滤汇总。

select student_id, round(avg(value),2) as avg_mark 
from mark
group by student_id 
having round(avg(value),2) > 80
order by avg_mark;

答案 1 :(得分:0)

avg_mark不是现有列,因此您无法在group by中使用它 你需要像avg(value)

那样引用它