문제를 보고 생각하자
“지금 내가 필요한 건 ‘행을 늘리는 결합’인가? 아니면 ‘기준값/판단용 결과’를 먼저 만드는 건가?”
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 서브쿼리
가장 중요한점!
현재 내가 집중하고 있는 포인트
“이 문제도 서브쿼리로 풀 수 있지 않을까?”
대신 이렇게 생각하자!
“이 문제에서 서브쿼리가 자연스러운가?”
앞으론 이렇게 연습하기
- 집계가 필요한가?
- 집계 결과가 조건인가?
- 그 결과를 다시 써야 하나?
'F.SQL > 무엇이 문제인가' 카테고리의 다른 글
| 잠깐 짚고 가기: 나는 문제를 보면 서브쿼리로 풀 생각을 못할까 (1) | 2026.01.07 |
|---|---|
| 잠깐 짚고 가기: 나는 왜 join 문제만 보면 생각이 멈출까? (0) | 2026.01.06 |
| 잠깐 짚고 가기: 데이터 딕셔너리에 관하여 (0) | 2026.01.04 |
| 잠깐 짚고 가기: 수도코드와 Line by Line란 무엇인가 (0) | 2026.01.03 |
