Логотип коледжу
Оптико-механічний фаховий коледж

Практична робота №11. Агрегація, групування та операції над множинами

Мета

Навчитися будувати звіти за допомогою агрегатних функцій, групування GROUP BY, фільтрації HAVING та операцій над множинами.

Підготовка

Перед виконанням опрацюйте пов'язані лекції:

Завдання

  1. Для схеми college складіть звіти:
    • кількість курсів у кожному підрозділі: COUNT, GROUP BY;
    • середня кількість кредитів курсів: AVG;
    • мінімальна та максимальна оцінка серед реєстрацій: MIN, MAX;
    • сумарна кількість реєстрацій на курс із фільтрацією HAVING.
  2. Покажіть відмінність WHERE від HAVING на одному запиті двома способами та поясніть результат.
SELECT course_id, COUNT(*) AS enrollments
FROM college.enrollments
GROUP BY course_id
HAVING COUNT(*) >= 2;
  1. Використайте операції над множинами: UNION, UNION ALL, INTERSECT, EXCEPT для двох підмножин даних (наприклад, коди курсів першого та другого підрозділів) і поясніть різницю між UNION та UNION ALL.
  2. Побудуйте один прикладний звіт: «Топ курсів за кількістю студентів» із групуванням і сортуванням.

Вимоги до результату

  • SQL-скрипт aggregates.sql із запитам та коментарями.
  • Пояснення результатів кожного запиту словами.
  • Приклад операцій над множинами із зазначенням потужності результатів.

Питання для захисту

  • Чому WHERE не можна використати для фільтрації після групування?
  • Що повертає COUNT(*) за відсутності рядків?
  • У чому різниця між UNION і UNION ALL?
  • Як NULL впливає на агрегатні функції?

Пов'язані лекції

Ресурси

Здати роботу