Часть моего задания гласит это 6. Отобразите идентификатор студента и средний балл для каждого студента.
Вот что я придумал
SELECT student_id, AVG(score) FROM scores;
Но он показывает только средний балл первого ученика. Что мне нужно изменить?
Вы должны добавить GROUP_BY для выполнения агрегированной функции, такой как AVG(). SELECT student_id, AVG(score) FROM scores GROUP BY student_id;
«эта 6» - что это значит?
Спасибо! после "этого" должна стоять запятая, ха-ха
Если вы используете групповую функцию в операторе, не содержащем предложения GROUP BY, это эквивалентно группировке по всем строкам. - dev.mysql.com/doc/refman/8.0/en/group-by-functions.html






Вам нужен оператор groupby.
SELECT student_id, AVG(score) FROM (table_name) GROUPBY student_id
Может, стол такой,
|class_id|class_name|student_id|student_name|score|
Вы должны подробно описать свою таблицу. В любом случае, я думаю, что GROUPBY - это все, что вам нужно в этом вопросе.
GROUPBY -> GROUP BY и не помещайте table_name в () (сбивает с толку).
ты прав, моя ошибка. Я не знаю его имени стола, поэтому поставил его здесь. Может, это сбивает с толку.
в вопросе имя scores. Но в целом абстрактное имя_таблицы можно правильно интерпретировать.
Пожалуйста, попробуйте этот запрос с GROUP BY
SELECT student_id, AVG(score) FROM scores GROUP BY student_id
Вам не хватает
GROUP BY.