Корельовані вкладені запити

Прийняття рішень на основі даних у SQL

Bart Baesens

Professor Data Science and Analytics

Корельовані запити

  • Умова в операторі WHERE внутрішнього запиту.
  • Посилається на стовпчик таблиці у зовнішньому запиті.
Прийняття рішень на основі даних у SQL

Приклад корельованого запиту

  • Кількість прокатів фільму понад 5
    SELECT *
    FROM movies as m
    WHERE 5 < 
      (SELECT COUNT(*)
      FROM renting as r
      WHERE r.movie_id=m.movie_id);
    
Прийняття рішень на основі даних у SQL

Оцінімо внутрішній запит

SELECT COUNT(*)
FROM renting as r
WHERE r.movie_id = 1;
| count |
|-------|
| 8     |
Прийняття рішень на основі даних у SQL

Оцінімо зовнішній запит

Кількість прокатів фільму більше ніж 5

SELECT *
FROM movies as m
WHERE 5 < 
    (SELECT COUNT(*)
    FROM renting as r
    WHERE r.movie_id = m.movie_id);
| movie_id | title                 | genre  | runtime | year_of_release | renting_price |
|----------|-----------------------|--------|---------|-----------------|---------------|
| 1        | One Night at McCool's | Comedy | 93      | 2001            | 2.09          |
| 2        | Swordfish             | Drama  | 99      | 2001            | 2.19          |
Прийняття рішень на основі даних у SQL

Менше ніж 5 прокатів фільму

Виберіть фільми з менше ніж 5 прокатами.

SELECT *
FROM movies as m
WHERE 5 > 
    (SELECT COUNT(*)
    FROM renting as r
    WHERE r.movie_id = m.movie_id);
| movie_id | title           | genre              | runtime | year_of_release | renting_price |
|----------|-----------------|--------------------|---------|-----------------|---------------|
| 17       | The Human Stain | Mystery & Suspense | 106     | 2003            | 1.99          |
| 20       | Love Actually   | Comedy             | 135     | 2003            | 2.29          |
Прийняття рішень на основі даних у SQL

Давайте потренуємось!

Прийняття рішень на основі даних у SQL

Preparing Video For Download...