#sql #subquery #sql-delete
#sql #подзапрос #sql-удалить
Вопрос:
Таблицы Мне нужно удалить из таблицы students всех студентов, которые получили меньше среднего процента правильных ответов в таблице exam_results. Это должно быть сделано с помощью подзапросов.
До сих пор я пытался:
DELETE FROM students
WHERE id IN (SELECT student_id FROM exam_results WHERE percentage < AVG(percentage));
Это возвращает: ERROR 1111: Invalid use of group function
Почему это недопустимое использование функции group? Чего мне не хватает или что с этим не так?
Любая помощь очень ценится! Спасибо!
Ответ №1:
Вам нужно найти ученика sub-query
следующим образом:
DELETE FROM students
WHERE id IN
(SELECT student_id
FROM exam_results
WHERE percentage < (select AVG(percentage) from exam_results);
Вы также можете использовать analytical function
, но это зависит от вашей версии MySQL. поэтому, пожалуйста, отметьте базу данных и ее версию, над которой вы работаете.