본문 바로가기

다음 단계 — 더 배우고 싶다면

다음 단계 — 더 배우고 싶다면

이 책에서 배운 것을 정리하면 이렇습니다.

  • 원칙 1,2: SELECT + FROM — 어떤 열을, 어느 테이블에서
  • 원칙 3: WHERE — 어떤 행만
  • 원칙 4: ORDER BY — 어떤 순서로, 몇 개만
  • 원칙 5: GROUP BY — 묶어서 집계하면
  • 원칙 6: HAVING — 집계 후 조건은

그리고 집계 함수 다섯 가지: COUNT, SUM, AVG, MAX, MIN.

이것만으로 한 테이블 안에서 원하는 데이터를 꺼낼 수 있습니다. 실무에서 마주치는 분석 중 상당수가 여기서 해결됩니다. 하지만 더 깊이 들어가면 새로운 질문들이 생깁니다.

지금 할 수 있는 것 vs 아직 못 하는 것

할 수 있는 것

  • 한 테이블에서 원하는 열과 행 꺼내기
  • 조건으로 데이터 필터링하기
  • 원하는 순서로 정렬하고 상위 N개 뽑기
  • 카테고리별, 날짜별 집계 분석하기
  • Claude와 함께 시각화 대시보드 만들기

아직 못 하는 것

  • 두 테이블을 연결해서 함께 분석하기
  • 집계 결과를 다시 분석 재료로 쓰기
  • 같은 테이블을 여러 번 활용하는 복잡한 분석

이 책이 끝이 아닙니다. 다음 단계가 있습니다.

2권 — 한 테이블, 더 깊이

"6원칙 응용 — 원하는 분석을 직접 설계하기"

이 책에서 배운 6원칙으로 할 수 있는 분석을 훨씬 다양하게 구성합니다. 새로운 명령어가 아니라, 지금 아는 것을 조합하고 응용하는 법을 익힙니다.

2권에서 다루는 것들

날짜와 시간 분석

  • 요일별 판매 현황
SELECT DAYNAME(판매일) AS 요일,
       COUNT(*) AS 판매건수,
       SUM(단가) AS 총매출
FROM 판매정보
GROUP BY DAYNAME(판매일)
ORDER BY 판매건수 DESC;
  • 월별 누적 매출 추이
SELECT DATE_FORMAT(판매일, '%Y-%m') AS 월,
       SUM(단가) AS 월매출
FROM 판매정보
GROUP BY DATE_FORMAT(판매일, '%Y-%m')
ORDER BY 월;

날짜 함수를 자유롭게 다루면 월별, 주별, 요일별 패턴을 한 줄로 꺼낼 수 있습니다.

CASE WHEN 응용 — 구간 분석

SELECT CASE
           WHEN 단가 >= 1000000 THEN '고가'
           WHEN 단가 >= 100000 THEN '중가'
           ELSE '저가'
       END AS 가격대,
       COUNT(*) AS 주문건수,
       SUM(단가) AS 총매출
FROM 판매정보
GROUP BY 가격대
ORDER BY 총매출 DESC;

CASE WHEN을 GROUP BY와 조합하면 연령대별, 금액대별, 기간별 구간 분석이 가능합니다.

NULL 처리와 데이터 정제

실무 데이터에는 항상 결측값이 있습니다. NULL을 처리하고, 이상한 값을 걸러내고, 깨끗한 데이터를 만드는 방법을 다룹니다.

SELECT COALESCE(지역, '미입력') AS 지역
FROM 고객정보;
SELECT 상품명, AVG(단가) AS 평균단가
FROM 판매정보
WHERE 단가 BETWEEN 10000 AND 1000000
GROUP BY 상품명;

분석 설계 — 질문에서 쿼리까지

"어떤 질문을 어떤 쿼리로 바꿀 것인가"를 다룹니다.

  • 질문: 이번 달 가장 많이 팔린 상품은? → GROUP BY 상품명 + COUNT + ORDER BY + LIMIT 1
  • 질문: 고객별 총구매금액 상위 10명은? → GROUP BY 고객ID + SUM + ORDER BY + LIMIT 10
  • 질문: 3월에 구매한 고객 수는? → WHERE 판매일 BETWEEN + COUNT(DISTINCT 고객ID)

분석의 핵심은 좋은 질문을 쿼리로 번역하는 것입니다. 2권에서는 이 번역 능력을 집중적으로 키웁니다.

3권 — JOIN, 서브쿼리, CTE

"두 테이블 이상을 다루는 SQL"

6원칙과 응용 분석을 충분히 익혔다면 이제 진짜 복잡한 분석으로 넘어갑니다.

JOIN — 두 테이블을 연결하기

지금 판매정보에는 고객 이름이 없습니다. 고객ID만 있습니다. 고객 이름을 함께 보려면 고객정보 테이블과 연결해야 합니다. 이것이 JOIN입니다.

SELECT 고객정보.이름,
       판매정보.상품명,
       판매정보.단가
FROM 판매정보
JOIN 고객정보
  ON 판매정보.고객ID = 고객정보.고객ID;

실행 결과

이름상품명단가
김민수노트북 Pro1,500,000
이지은무선 키보드45,000
김민수마우스 패드15,000

두 테이블이 고객ID로 연결되어 하나의 결과가 됩니다.

JOIN을 배우면 이런 분석이 가능해집니다.

  • 고객 등급별 총구매금액 → 고객정보 + 판매정보 JOIN
  • VIP 고객의 선호 상품 → 고객정보 + 판매정보 JOIN + WHERE + GROUP BY
  • 구매 이력이 없는 고객 → 고객정보 LEFT JOIN 판매정보

서브쿼리 — 쿼리 안에 쿼리 넣기

서브쿼리는 쿼리 결과를 또 다른 쿼리의 재료로 씁니다.

SELECT 상품명, 단가
FROM 판매정보
WHERE 단가 > (SELECT AVG(단가) FROM 판매정보);

(SELECT AVG(단가) FROM 판매정보) 부분이 먼저 실행되어 평균값을 계산합니다. 그 결과를 바깥 쿼리의 WHERE 조건으로 씁니다.

CTE — 복잡한 쿼리를 단계별로 나누기

CTE(Common Table Expression)는 복잡한 쿼리를 여러 단계로 나눠서 읽기 쉽게 만드는 방법입니다.

WITH 상품별집계 AS (
    SELECT 상품명,
           COUNT(*) AS 판매건수,
           SUM(단가) AS 총판매금액
    FROM 판매정보
    GROUP BY 상품명
)
SELECT 상품명, 총판매금액
FROM 상품별집계
WHERE 판매건수 >= 2
ORDER BY 총판매금액 DESC;

긴 쿼리를 작은 단위로 나눠 이름을 붙입니다. 읽기도 쉽고, 수정하기도 쉽습니다.

학습 로드맵

지금 이 책을 끝냈다면 여기

      ┌───────────────┐
      │   1권 완료     │  SELECT + FROM + WHERE
      │               │  ORDER BY + GROUP BY + HAVING
      └───────┬───────┘
              ↓
      ┌───────────────┐
      │   2권 예정     │  6원칙 응용
      │               │  날짜 분석, CASE WHEN 응용
      │               │  데이터 정제, 분석 설계
      └───────┬───────┘
              ↓
      ┌───────────────┐
      │   3권 예정     │  JOIN, 서브쿼리, CTE
      │               │  두 테이블 이상 분석
      │               │  복잡한 쿼리 설계
      └───────┘

각 단계는 이전 단계가 탄탄해야 빠르게 익힐 수 있습니다. 서두르지 않아도 됩니다.

지금 당장 할 수 있는 연습

업무에서 자주 쓰는 데이터가 있다면, 지금 배운 6원칙으로 직접 꺼내보세요.

  1. SELECT * FROM 테이블이름; → 어떤 열이 있는지 확인
  2. 조건 하나씩 추가해서 필터링
  3. GROUP BY로 카테고리별 집계
  4. ORDER BY + LIMIT으로 상위 N개
  5. 결과를 Claude에 넘겨서 시각화

SQL은 쓸수록 익숙해집니다.

마지막으로

이 책은 SQL의 시작점입니다. 6원칙을 배웠다는 것은 데이터를 질문할 줄 알게 되었다는 뜻입니다.

"이 상품이 왜 잘 팔릴까?" "어떤 고객이 가장 많이 사는가?" "이번 달 매출이 왜 줄었을까?"

이런 질문을 SQL로 표현하고, Claude와 함께 시각화하고, 팀에 공유할 수 있게 됐습니다.

데이터를 다루는 능력은 직군을 가리지 않습니다. 마케터도, 기획자도, 운영팀도, 대표도 데이터르 직접 꺼낼 수 있으면 훨씬 빠르게 움직입니다.

이 책의 6원칙이 그 첫걸음이 되길 바랍니다.

김민서 사원

팀장님, 저 첫날에 VIP 고객 뽑는 것도 몰랐는데 이제 대시보드까지 만들었어요.

박지수 팀장 : 민서씨, 처음부터 잘 했어요. 결과를 먼저 그리고 코드를 썼잖아요. 그게 SQL을 잘 쓰는 사람들이 하는 방식이에요.

SELECT *
FROM 다음권
WHERE 준비 = '완료'
ORDER BY 기대감 DESC;
다음 단계 — 더 배우고 싶다면 - SQL 에센셜 | 위니버시티