Чем плох такой запрос? Не обращая внимания на то, что нет вложенного подзапроса.
(Нормально ли группировать одновременно s.group_id, s.name ?)
SELECT s.group_id, s.name, AVG(e.grade) as average_grade
FROM students s
INNER JOIN enrollments e ON s.id = e.student_id
GROUP BY s.group_id, s.name
HAVING AVG(e.grade) > 80;
-- Основной запрос для нахождения студентов из групп со средним баллом выше 80
SELECT s.group_id, s.name, AVG(e.grade) as average_grade
FROM students s
INNER JOIN enrollments e ON s.id = e.student_id
GROUP BY s.group_id, s.name
HAVING AVG(e.grade) > 80;
