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

Практична робота №16. Складання запитів із підзапитами

Мета

Навчитися будувати скалярні, багаторядкові та корельовані підзапити та обирати між підзапитом і JOIN.

Підготовка

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

Завдання

  1. Складіть скалярний підзапит: знайдіть курси, дорожчі за середню плату:
SELECT title FROM college.courses
WHERE tuition_fee > (SELECT AVG(tuition_fee) FROM college.courses);
  1. Використайте підзапит з IN: знайдіть студентів, які мають реєстрацію на курси з кредитами більше 4.
  2. Використайте ANY та ALL: знайдіть курси, чия кількість кредитів більша за будь-який курс підрозділу фізики; потім більша за всі.
  3. Побудуйте корельований підзапит з EXISTS: знайдіть підрозділи, що мають хоча б один курс із реєстраціями.
  4. Розв'яжіть одне завдання двома способами — підзапитом і JOIN — та порівняйте результати.
  5. Використайте підзапит у секції FROM як похідну таблицю: згрупуйте реєстрації за курсами у вкладеному запиті та підсумуйте ззовні.

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

  • SQL-скрипт subqueries.sql із запитами та коментарями.
  • Для кожного підзапиту: тип (скалярний/багаторядковий/корельований) і пояснення.
  • Порівняння підзапиту та JOIN для одного завдання.

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

  • Чим скалярний підзапит відрізняється від багаторядкового?
  • Що відбувається, якщо скалярний підзапит повертає кілька рядків?
  • Коли доцільний EXISTS замість IN?
  • Чому корельований підзапит виконується для кожного зовнішнього рядка?

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

Ресурси

Здати роботу