SQL: средняя оценка по каждому классу

11 класс 1 просмотр задан 27.05.2026 📚 редакторский

В таблице students(name, class, grade) вычислите среднюю оценку для каждого класса и выведите классы со средней не ниже 4. Используйте GROUP BY и HAVING.

1 ответ

Принятый ответ
Ответ

GROUP BY class HAVING AVG(grade) >= 4

Как это получилось

Запрос:

SELECT class, AVG(grade) AS avg_grade
FROM students
GROUP BY class
HAVING AVG(grade) >= 4
ORDER BY avg_grade DESC;

Разбор:

  • GROUP BY class — группируем строки по значению class. На каждую группу будет одна строка результата.
  • AVG(grade) — агрегатная функция, считает среднее по группе.
  • HAVING — фильтр после группировки. (WHERE фильтрует строки до группировки.)
  • AS avg_grade — псевдоним столбца для удобства.

Ключевое отличие WHERE и HAVING:

  • WHERE class = 10 — отбросит строки до подсчёта.
  • HAVING AVG(grade) >= 4 — отбросит уже сгруппированные классы.

Пример вывода:

class | avg_grade
  10  |    4.7
   9  |    4.2

Классы со средней <4 в выводе не появятся.

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти