문제를 보고 생각하자

“지금 내가 필요한 건 ‘행을 늘리는 결합’인가? 아니면 ‘기준값/판단용 결과’를 먼저 만드는 건가?”

 

 

JOIN을 써야 하는 상황?

JOIN은 언제 쓰나?

“이 테이블의 각 행에 다른 테이블의 정보를 붙이고 싶을 때”

 

특징

  • 결과 행 수가 늘어나거나 유지됨
  • 테이블 ↔ 테이블 연결
  • “정보 확장” 느낌

예시

-- 주문 + 고객 이름
SELECT o.order_id, u.name
FROM orders o
JOIN users u ON o.user_id = u.user_id;

“주문에 고객 정보를 붙인다”


서브쿼리를 써야 하는 상황?

 

기준값’을 먼저 만들어야 할 때

예시
“전체 평균 급여보다 많이 받는 직원”

 

수도코드

1. 전체 평균 급여 계산
2. 그 값과 직원 급여 비교

 

SELECT *
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

조건용 집계 결과’가 필요할 때

예시

"거래 금액이 70만 원 이상인 사용자”

1. 사용자별 거래 금액을 계산한다
2. 70만 원 이상인 사용자만 고른다
3. 그 사용자 정보가 필요하다

 


서브쿼리 vs JOIN을 가르는 결정적 질문 3개

 

질문 1: 지금 필요한 게 집계 결과(AVG, SUM, COUNT) 인가?

YES → 서브쿼리

 

질문 2: 그 집계 결과를 조건이나 기준으로 써야 하는가?

YES → 서브쿼리

 

질문 3: 그 결과를 행처럼 다시 써야 하는가?

YES → FROM 서브쿼리


가장 중요한점!

현재 내가 집중하고 있는 포인트

“이 문제도 서브쿼리로 풀 수 있지 않을까?”

 

대신 이렇게 생각하자!

“이 문제에서 서브쿼리가 자연스러운가?


앞으론 이렇게 연습하기

 

  • 집계가 필요한가?
  • 집계 결과가 조건인가?
  • 그 결과를 다시 써야 하나?

 

 

+ Recent posts