SQL агрегатные функции, где предложение - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно отобразить средние оценки ученика, где средние оценки должны быть больше 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 голосов
/ 24 апреля 2018

avg_mark не является существующим столбцом, поэтому вы не можете использовать его в группе по Вы должны ссылаться на него как avg (значение)

0 голосов
/ 24 апреля 2018

Вам необходимо использовать 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...