핵심 요약
데이터 분석 과정에서 발생하는 문제들은 대부분 몇 가지 재사용 가능한 패턴으로 귀결된다. 이 글은 조인과 필터링부터 퍼널 분석, 시계열 비교에 이르기까지 비즈니스 분석 작업의 핵심이 되는 7가지 SQL 패턴을 상세히 설명한다. 각 패턴은 PostgreSQL 기반의 실제 코딩 인터뷰 문제와 솔루션을 통해 작동 원리를 보여주며, 이를 통해 복잡한 데이터를 비즈니스 인사이트로 변환하는 구체적인 경로를 제공한다. 데이터 사이언티스트가 실무와 면접에서 즉시 활용할 수 있는 표준화된 분석 프레임워크를 구축하는 데 중점을 둔다.
배경
SQL 기본 문법 (SELECT, FROM, WHERE), PostgreSQL 환경에 대한 이해, 기본적인 데이터 분석 개념
대상 독자
데이터 사이언티스트, 데이터 분석가, SQL을 활용하는 백엔드 개발자
의미 / 영향
이러한 분석 패턴의 숙달은 데이터 사이언티스트가 단순 데이터 추출을 넘어 비즈니스 가치를 직접적으로 도출하게 합니다. 특히 표준화된 SQL 패턴을 사용하면 팀 내 코드 리뷰 효율성이 높아지고, 복잡한 데이터 파이프라인 구축 시 오류를 최소화할 수 있습니다.
섹션별 상세
SELECT
c.channel_name,
r.post_id,
r.created_at,
r.likes
FROM (
SELECT
channel_id,
post_id,
created_at,
likes,
DENSE_RANK() OVER(PARTITION BY channel_id ORDER BY likes DESC) AS post_rank
FROM posts
) AS r
JOIN channels AS c ON r.channel_id = c.channel_id
WHERE r.post_rank <= 5;윈도우 함수 DENSE_RANK를 사용하여 채널별 좋아요 수 기준 상위 5개 포스트를 추출하는 예시
SELECT
t.month,
SUM(t.monthly_revenue) OVER(ORDER BY t.month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS rolling_3m_revenue
FROM (
SELECT
to_char(created_at::date, 'YYYY-MM') AS month,
SUM(amount) AS monthly_revenue
FROM transactions
GROUP BY 1
) t;윈도우 함수를 활용하여 최근 3개월간의 이동 합계 매출을 계산하는 예시
SELECT
inspection_date::DATE,
COUNT(violation_id) - LAG(COUNT(violation_id)) OVER(ORDER BY inspection_date::DATE) AS diff
FROM sf_restaurant_health_violations
GROUP BY 1
ORDER BY 1;LAG 함수를 사용하여 전일 대비 위반 건수의 변화량을 계산하는 예시
실무 Takeaway
- 복잡한 비즈니스 요구사항을 7가지 표준 SQL 패턴으로 구조화하면 분석 속도와 코드 재사용성을 극대화할 수 있다.
- LAG()나 DENSE_RANK()와 같은 윈도우 함수를 숙달하면 서브쿼리를 남발하지 않고도 효율적인 시계열 및 순위 분석이 가능하다.
- 퍼널 분석 시 CTE를 활용해 단계를 분리하면 가독성이 높아지고 각 단계별 이탈 원인을 명확히 파악할 수 있다.
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.