데이터 분석이나 데이터 기반 의사결정이 필수가 된 시대입니다.
하지만 현실에서의 SQL은 이론서에 나오는 모든 기능을 활용하기보다는, 자주 사용하는 실전 기능 몇 가지를 효율적으로 다루는 것이 더 중요합니다.
특히 회사에서는 속도, 효율, 협업이 중요하기 때문에 “잘 쓰이는 기능”과 “있으면 좋은 기능”은 분명히 다릅니다.
이 글에서는 제가 외국계 데이터 분석 직무에서 실제로 가장 자주 쓰고, 실무에 즉각 활용 가능한 SQL 기능 3가지를 정리해보았습니다.
1. CASE WHEN: 조건 분기를 위한 실무 최애 구문
CASE WHEN은 조건에 따라 새로운 컬럼을 생성하거나 그룹을 나눌 때 가장 많이 쓰는 구문입니다.
기초 SQL 문법에선 간과되지만, 실무에서는 거의 모든 분석 리포트에 등장합니다.
✔️ 사용 예시
SELECT
user_id,
purchase_amount,
CASE
WHEN purchase_amount >= 100000 THEN 'VIP'
WHEN purchase_amount >= 50000 THEN 'Regular'
ELSE 'General'
END AS user_grade
FROM users;
💡 실무에서 이렇게 활용합니다:
- 구매 금액에 따른 유저 등급 분류
- 회원 가입 경로에 따라 유입 채널 분류
- 반응률이 낮은 고객군을 “이탈 예상”으로 분류
- 날짜 조건에 따라 주간/월간 그룹핑 등
CASE WHEN 구문이 익숙해지면 데이터 전처리, 대시보드 분류, KPI 세그먼트 구성 등 거의 모든 실무 분석에 활용할 수 있습니다.
2. ROW_NUMBER() 윈도우 함수: 랭킹과 필터를 한번에
윈도우 함수 중에서도 ROW_NUMBER()는 실무에서 가장 유용한 함수 중 하나입니다.
행별로 순위를 매기거나, 특정 조건에서 최상위 값만 추출하고 싶을 때 쓰입니다.
✔️ 사용 예시
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY purchase_date DESC) AS rn
FROM purchases
) sub
WHERE rn = 1;
💡 실무에서 이렇게 활용합니다:
- 유저별 가장 최근 구매 추출
- 카테고리별 판매순위 1위 상품
- 부서별 최근 로그인한 직원 정보
- 광고 채널별 최초 유입 경로 추출
특히 중복 제거, 최신 데이터 필터링 등에 자주 사용되며, ROW_NUMBER()를 제대로 다루는 것만으로도 분석 정확도가 크게 향상됩니다.
3. DATE_TRUNC() & 날짜 함수 조합: 시간 단위 정리의 핵심
날짜 관련 분석이 없는 SQL은 거의 없습니다.
특히 마케팅, 매출, 트래픽 분석처럼 시간 흐름이 중요한 분석에서는 DATE_TRUNC()와 날짜 계산 함수들이 핵심 도구입니다.
✔️ 사용 예시
SELECT
DATE_TRUNC('week', created_at) AS week_start,
COUNT(*) AS signups
FROM users
GROUP BY 1
ORDER BY 1;
💡 실무에서 이렇게 활용합니다:
- 주별/월별 신규 가입자 수 추이
- 일자 기준 KPI 추이 분석
- 시간대별 클릭수, 유입률 분석
- 캠페인 시작일부터 30일 간의 이탈률 추이 계산
DATE_TRUNC() 외에도 DATE_ADD, DATEDIFF, CURRENT_DATE, NOW() 같은 기본 날짜 함수들을 적절히 조합하면, 시간 축을 기준으로 한 다양한 분석이 가능합니다.
✅ 실무에서는 “익숙하게 자주 쓰는 기능”이 먼저입니다
지금까지 정리한 3가지 SQL 기능은 다음과 같습니다:
CASE WHEN | 조건에 따른 그룹핑/분류 | 매우 자주 사용 |
ROW_NUMBER() | 순위, 최신값 필터링 | 매우 자주 사용 |
DATE_TRUNC() 외 날짜 함수 | 기간별 집계, 시간 축 분석 | 매우 자주 사용 |
SQL은 기능이 많지만, 실무에서는 간결하고 빠르게 결과를 도출하는 것이 핵심입니다.
오늘 소개한 3가지 기능을 잘 다루기만 해도 대부분의 데이터 분석 업무를 충분히 커버할 수 있습니다.