#5 Subqueries and CTEs

#5.1 Introduction

subquery์™€ CTE๋ฅผ ํ™œ์šฉํ•ด ๋” ๋‚˜์€ ํ™œ์šฉ์ด ๊ฐ€๋Šฅ

-- List movies with a (rating|revenue) higher than the average (rating|revenue) of all movies.
-- List movies with a rating higher than the average rating of movies in their genre.
-- Find the directors with a career revenue higher than the average revenue of all directors.
-- Find the movies with a rating higher than the average rating of movies released in the same year.
-- Make a super slow query and optimize it as much as we can with what we know so far.

#5.1 Independent Subqueries

Subquery - ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๋‚ด๋ถ€์— ์žˆ๋Š” ์ฟผ๋ฆฌ๋กœ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ ์‚ฌ์šฉ

Independence Subquery - ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ์— ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰์‹œํ‚จ ํ›„ ๊ฐ’์„ ๊ธฐ์–ตํ•ด ๋‚˜๋จธ์ง€์— ํ™œ์šฉ

-- List movies with a (rating|revenue) higher
-- than the average (rating|revenue) of all movies.

SELECT title, rating, revenue
FROM movies
WHERE 
  rating > (SELECT avg(rating) FROM movies) AND
  revenue > (SELECT avg(revenue) FROM movies)

#5.2 CTEs

Common Table Expressions - Independent Subqueries๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

SQL ์ฟผ๋ฆฌ๋ฅผ ๋” ์ž‘์€ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋‚˜๋ˆ  ๋ชจ๋“ˆ์‹ SQL ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

View์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์˜๊ตฌ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ํ•ด๋‹น ์ฟผ๋ฆฌ์˜ context์—์„œ๋งŒ ์ƒ์„ฑ๋˜๊ณ  ๋ฒ„๋ ค์ง„๋‹ค.

#5.3 Correlated Subqueries

์ƒ๊ด€๊ด€๊ณ„ ์„œ๋ธŒ์ฟผ๋ฆฌ - ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ ์™ธ๋ถ€ ์ฟผ๋ฆฌ์—์„œ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•จ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‹คํ–‰์ด ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ํ–‰์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— "์ƒ๊ด€๋จ"์ด๋ผ๊ณ  ํ•จ ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋จผ์ € ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋œ ๋‹ค์Œ ํ•ด๋‹น ๊ฒฐ๊ณผ๊ฐ€ ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์—ด์„ ์ฐธ์กฐํ•˜์—ฌ ์™ธ๋ถ€ ์ฟผ๋ฆฌ์— ์—ฐ๊ฒฐ๋˜๊ณ  ์™ธ๋ถ€ ์ฟผ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ ํ–‰์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์”ฉ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

#5.4 Correlated CTEs

#5.5 Subquery Practice

#5.6 Final Practice

Last updated

Was this helpful?