Практична робота №11. Агрегація, групування та операції над множинами
Мета
Навчитися будувати звіти за допомогою агрегатних функцій, групування GROUP BY, фільтрації HAVING та операцій над множинами.
Підготовка
Перед виконанням опрацюйте пов'язані лекції:
Завдання
- Для схеми
collegeскладіть звіти:- кількість курсів у кожному підрозділі:
COUNT,GROUP BY; - середня кількість кредитів курсів:
AVG; - мінімальна та максимальна оцінка серед реєстрацій:
MIN,MAX; - сумарна кількість реєстрацій на курс із фільтрацією
HAVING.
- кількість курсів у кожному підрозділі:
- Покажіть відмінність
WHEREвідHAVINGна одному запиті двома способами та поясніть результат.
SELECT course_id, COUNT(*) AS enrollments
FROM college.enrollments
GROUP BY course_id
HAVING COUNT(*) >= 2;
- Використайте операції над множинами:
UNION,UNION ALL,INTERSECT,EXCEPTдля двох підмножин даних (наприклад, коди курсів першого та другого підрозділів) і поясніть різницю міжUNIONтаUNION ALL. - Побудуйте один прикладний звіт: «Топ курсів за кількістю студентів» із групуванням і сортуванням.
Вимоги до результату
- SQL-скрипт
aggregates.sqlіз запитам та коментарями. - Пояснення результатів кожного запиту словами.
- Приклад операцій над множинами із зазначенням потужності результатів.
Питання для захисту
- Чому
WHEREне можна використати для фільтрації після групування? - Що повертає
COUNT(*)за відсутності рядків? - У чому різниця між
UNIONіUNION ALL? - Як
NULLвпливає на агрегатні функції?
