📖 상관서브쿼리란?
- 서브쿼리가 그냥 하나의 테이블, 칼럼, 값을 의미하는 게 아니라 외부에서 한 행씩 보내서 두번째 행이 또 서브쿼리로 보내져서 두번재 행이 동작하고 이 사이클을 계속 도는 것.
- 그래서 외부 쿼리가 상관이 있는 서브쿼리라는 의미로 상관쿼리라고 부름
📖 상관서브쿼리 예시
customers 테이블
customer_id | customer_name | registration_date |
101 | Alice | 2023-01-01 |
102 | Bob | 2023-02-01 |
103 | Charlie | 2023-03-01 |
104 | David | 2023-04-01 |
-- 상관 서브쿼리의 예
SELECT customer_id,
(SELECT COUNT(*)
FROM orders
WHERE orders.customer_id = customers.customer_id) AS order_count
FROM customers;
-- 상관 서브쿼리의 예: JOIN으로 변환
SELECT c.customer_id, COUNT(o.order_id) AS order_count
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id
GROUP BY c.customer_id;
-- 상관 서브쿼리의 예: 윈도우 함수로 변환!
SELECT customer_id, COUNT(order_id) OVER(PARTITION BY customer_id) AS order_count
FROM orders;
📖 상관서브쿼리 실행 결과
customer_id | order_count |
101 | 2 |
102 | 2 |
103 | 1 |
104 | 0 |
오늘 회고
내일부터 본격 이커머스 고객 행동 데이터 분석하는 미니 프로젝트 들어간다 신난다