Nested query

การตัดสินใจเชิงข้อมูลด้วย SQL

Irene Ortner

Data Scientist at Applied Statistics

Nested query

  • บล็อก SELECT ใน WHERE หรือ HAVING
  • คิวรีย่อยคืนค่าเดียวหรือหลายค่า
  • ใช้ผลลัพธ์จากคิวรีย่อยเพื่อเลือกแถวในคิวรีอื่น
การตัดสินใจเชิงข้อมูลด้วย SQL

คิวรีย่อย

ขั้นตอนที่ 1: คิวรีย่อย

SELECT DISTINCT customer_id
FROM renting
WHERE rating <= 3
| customer_id |
|-------------|
| 28          |
| 41          |
| 86          |
| 120         |
การตัดสินใจเชิงข้อมูลด้วย SQL

ใช้ผลลัพธ์ใน WHERE

SELECT name
FROM customers
WHERE customer_id IN (28, 41, 86, 120);
การตัดสินใจเชิงข้อมูลด้วย SQL

คิวรีภายนอก

ขั้นตอนที่ 2: คิวรีภายนอก

SELECT name
FROM customers
WHERE customer_id IN
    (SELECT DISTINCT customer_id
    FROM renting
    WHERE rating <= 3);
| name            |
|-----------------|
| Sidney Généreux |
| Zara Mitchell   |
การตัดสินใจเชิงข้อมูลด้วย SQL

Nested query ใน HAVING

ขั้นตอนที่ 1: คิวรีย่อย

SELECT MIN(date_account_start)
FROM customers
WHERE country = 'Austria';
| min        |
|------------|
| 2017-11-22 |
การตัดสินใจเชิงข้อมูลด้วย SQL

Nested query ใน HAVING

ขั้นตอนที่ 2: คิวรีภายนอก

SELECT country, MIN(date_account_start)
FROM customers
GROUP BY country
HAVING MIN(date_account_start) <
    (SELECT MIN(date_account_start)
    FROM customers
    WHERE country = 'Austria');
| country       | min        |
|---------------|------------|
| Spain         | 2017-02-14 |
| Great Britain | 2017-03-31 |
การตัดสินใจเชิงข้อมูลด้วย SQL

นักแสดงในภาพยนตร์เรื่อง Ray มีใครบ้าง?

SELECT name
FROM actors
WHERE actor_id IN
    (SELECT actor_id 
     FROM actsin
     WHERE movie_id =
        (SELECT movie_id 
         FROM movies
         WHERE title='Ray'));
| name             |
|------------------|
| Jamie Foxx       |
| Kerry Washington |
| Regina King      |
การตัดสินใจเชิงข้อมูลด้วย SQL

มาฝึกกันเถอะ!

การตัดสินใจเชิงข้อมูลด้วย SQL

Preparing Video For Download...