실전 보고서 작성 패턴
윈도 함수만으로 유지율 곡선, 범주별 상위 N개, 세션화 같은 전형적인 대시보드를 구현해보세요.
실전 보고서 작성 패턴은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
패턴: 그룹별 상위 N개
사용자별 상위 3개 주문입니다.
WITH ranked AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total DESC) AS rn
FROM orders
)
SELECT * FROM ranked WHERE rn <= 3;패턴: 누적 합계
시간에 따른 누적 수익입니다.
SELECT day, revenue,
SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue;패턴: 최초 발생
각 사용자가 각 작업을 처음 수행한 시점입니다.
SELECT user_id, action, MIN(ts) AS first_at
FROM events
GROUP BY user_id, action;
-- Or with window functions for full row:
WITH firsts AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id, action ORDER BY ts) AS rn
FROM events
)
SELECT * FROM firsts WHERE rn = 1;패턴: 코호트 유지율
가입 주차별로 사용자를 그룹화하고 N주 차의 유지율을 계산합니다.
WITH cohorts AS (
SELECT id AS user_id, date_trunc('week', created_at) AS cohort_week
FROM users
),
activities AS (
SELECT user_id, date_trunc('week', ts) AS active_week FROM events
)
SELECT c.cohort_week,
(a.active_week - c.cohort_week) / 7 AS week_offset,
COUNT(DISTINCT a.user_id) AS active
FROM cohorts c
JOIN activities a USING (user_id)
WHERE a.active_week >= c.cohort_week
GROUP BY c.cohort_week, week_offset
ORDER BY c.cohort_week, week_offset;패턴: 퍼널 분석
각 단계에 도달한 사용자의 수를 계산합니다.
SELECT
COUNT(*) AS signed_up,
COUNT(*) FILTER (WHERE first_login_at IS NOT NULL) AS logged_in,
COUNT(*) FILTER (WHERE first_purchase_at IS NOT NULL) AS purchased
FROM users;패턴: 세션화
간격이 30분을 초과하면 이벤트를 세션으로 그룹화합니다.
WITH gaps AS (
SELECT user_id, ts,
CASE
WHEN ts - LAG(ts) OVER (PARTITION BY user_id ORDER BY ts)
> INTERVAL '30 min'
THEN 1 ELSE 0
END AS new_session
FROM events
)
SELECT user_id, ts,
SUM(new_session) OVER (PARTITION BY user_id ORDER BY ts) AS session_id
FROM gaps;패턴: 기간별 비교
현재 달과 이전 달을 비교합니다.
SELECT month, revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_month,
revenue - LAG(revenue) OVER (ORDER BY month) AS delta,
(revenue::FLOAT / NULLIF(LAG(revenue) OVER (ORDER BY month), 0) - 1) * 100 AS pct_change
FROM monthly_revenue
ORDER BY month;패턴: 피벗 출력
FILTER를 사용한 가로 형식입니다.
SELECT user_id,
SUM(amount) FILTER (WHERE month = '2024-01') AS jan,
SUM(amount) FILTER (WHERE month = '2024-02') AS feb,
SUM(amount) FILTER (WHERE month = '2024-03') AS mar
FROM monthly_spend
GROUP BY user_id;패턴: 오늘의 활성 사용자
DAU/WAU/MAU입니다.
SELECT
COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '1 day') AS dau,
COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '7 days') AS wau,
COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '30 days') AS mau
FROM events;패턴: 빈 구간 채우기
이벤트가 없는 날도 누락하지 말고 0으로 표시해야 합니다.
SELECT day, COALESCE(COUNT(e.id), 0) AS events
FROM generate_series(CURRENT_DATE - 30, CURRENT_DATE, INTERVAL '1 day') AS day
LEFT JOIN events e ON date_trunc('day', e.ts) = day
GROUP BY day
ORDER BY day;통찰을 위한 윈도 함수 결합
하나의 쿼리에 여러 윈도 열을 넣어 읽기 쉽고 빠르게 만듭니다.
SELECT day, revenue,
LAG(revenue) OVER w AS prev,
AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS avg_7d,
SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue
WINDOW w AS (ORDER BY day)
ORDER BY day;요약
대부분의 보고서는 상위 N개, 누적 합계, 코호트, 퍼널, 세션화, 기간별 비교, 피벗, 빈 구간 채우기라는 몇 가지 패턴으로 구성됩니다. 이 패턴들을 익히면 대시보드에 필요한 모든 SQL을 작성할 수 있습니다.
빠른 확인
범주별 "상위 5개 제품" 보고서를 만들고 있습니다. 관용적인 SQL 패턴은 무엇입니까?
자주 묻는 질문
“실전 보고서 작성 패턴” 강의는 무료인가요?
네 — “실전 보고서 작성 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“실전 보고서 작성 패턴”에서 뭘 배우나요?
윈도 함수만으로 유지율 곡선, 범주별 상위 N개, 세션화 같은 전형적인 대시보드를 구현해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“실전 보고서 작성 패턴” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.