У меня есть две таблиц:Присвоить псевдоним таблицы в подзапросе MySQL
exam
таблица, которая содержит оценку, выполняемые студентами- и стол студента
Оба соединены таким образом, : student.id = exam.student_id.
Я пытаюсь получить firt пяти студентов, которые имеют самый высокий балл, рассчитанный в среднем на их счет в течение 5 дней, используя приведенный ниже запрос:
SELECT
student.id as std_id,
student.name,
(SELECT AVG(score) FROM exam WHERE exam.student_id=std_id ORDER BY exam.timestamp DESC LIMIT 5) AS score
FROM student
ORDER BY score
DESC LIMIT 5
Я имею следующую ошибку:
#1054 - Unknown column 'std_id' in 'where clause'
Я также попробовал это, заменив std_id на student.id, но все равно не повезло.
Любая идея, как решить эту проблему? Большое спасибо
------------------------------------------------------------------------------
Извините, я допустил ошибку в своей логике. Как было сказано ранее, в среднем рассчитан на
only the last 5 scores recorded
. Обновленный запрос:
SELECT
student.id as std_id,
student.name,
(SELECT AVG(score) FROM (SELECT score FROM exam WHERE exam.student_id=student.id ORDER BY exam.timestamp DESC LIMIT 5) AS score) AS score
FROM student
ORDER BY score
DESC LIMIT 5
Место, которое дает ошибку, где я поставил exam.student_id = student.id
Спасибо.
Можете ли вы опубликовать определения таблиц и несколько примеров данных? – Kickstart