02. 고객 만족도 지표 분석 (NPS & CSAT)
1. 개요 및 시나리오
상황: 티켓 처리를 열심히 하고 있지만, 정작 고객들이 만족하고 있는지는 알 수 없습니다. CEO가 회의에서 이렇게 물어봅니다.
“우리 서비스 좋다고 추천하는 사람이 얼마나 돼요? (NPS)” “상담 받은 사람들 불만은 없나요? (CSAT)”
이번 챕터에서는 **NPS(순추천고객지수)**와 **CSAT(고객만족도)**라는 두 가지 핵심 지표를 직접 계산하고 분석해봅니다.
2. 데이터 준비
이번에는 새로운 테이블인 survey_cs_dummy를 사용합니다.
BigQuery (SQL)
# BigQuery 연결 설정 (01. CS 티켓 탐색과 동일)
from google.cloud import bigquery
client = bigquery.Client()데이터 구조
survey_cs_dummy 테이블의 주요 컬럼입니다:
user_id: 고객 IDnps_score: 0~10점 (친구에게 추천할 의향)csat_score: 1~5점 (상담 만족도)related_ticket_id: 관련된 티켓 ID (없을 수도 있음)
3. NPS (Net Promoter Score) 분석
NPS는 고객 충성도를 측정하는 가장 강력한 지표입니다. 공식은 다음과 같습니다:
NPS = (Promoter 비율) - (Detractor 비율)
- Promoter (추천자): 9~10점
- Passive (중립자): 7~8점
- Detractor (비추천자): 0~6점
❓ 문제 1: 그룹 분류하기
Q. nps_score를 기준으로 고객을 Promoter, Passive, Detractor로 분류하고, 각 그룹의 비율을 구하세요.
BigQuery (SQL)
Hint: CASE WHEN 구문을 사용하여 nps_category 컬럼을 만드세요.
정답 코드 보기
WITH nps_classification AS (
SELECT
nps_score,
CASE
WHEN nps_score >= 9 THEN 'Promoter'
WHEN nps_score >= 7 THEN 'Passive'
ELSE 'Detractor'
END as nps_category
FROM `your-project-id.retail_analytics_us.survey_cs_dummy`
WHERE nps_score IS NOT NULL
)
SELECT
nps_category,
COUNT(*) as count,
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) as percentage
FROM nps_classification
GROUP BY nps_category;❓ 문제 2: NPS 점수 계산하기
Q. 위에서 구한 비율을 바탕으로 최종 NPS 점수를 계산하세요.
BigQuery (SQL)
정답 코드 보기
SELECT
ROUND(
(COUNTIF(nps_score >= 9) - COUNTIF(nps_score <= 6)) * 100.0 / COUNT(*),
1
) as nps_score
FROM `your-project-id.retail_analytics_us.survey_cs_dummy`
WHERE nps_score IS NOT NULL;4. CSAT (고객 만족도) 분석
CSAT는 특정 상호작용(여기서는 상담)에 대한 만족도입니다. 보통 4점(만족)과 5점(매우 만족)을 합쳐서 계산합니다.
❓ 문제 3: CSAT 점수 산출
Q. 전체 응답 중 4점 이상을 준 비율(%)을 구하세요.
BigQuery (SQL)
정답 코드 보기
SELECT
ROUND(COUNTIF(csat_score >= 4) * 100.0 / COUNT(*), 1) as csat_pct
FROM `your-project-id.retail_analytics_us.survey_cs_dummy`
WHERE csat_score IS NOT NULL;5. 심화: 티켓과 설문 연결하기
설문 데이터만 따로 보는 것보다, **“어떤 티켓을 처리했을 때 만족도가 높았나?”**를 보는 게 중요합니다.
❓ 문제 4: 티켓 상태별 평균 만족도
Q. cs_tickets_dummy 테이블과 조인하여, 티켓 상태(status)별 평균 CSAT 점수를 구하세요.
BigQuery (SQL)
Hint: related_ticket_id와 ticket_id를 JOIN Key로 사용하세요.
정답 코드 보기
SELECT
t.status,
ROUND(AVG(s.csat_score), 2) as avg_csat
FROM `your-project-id.retail_analytics_us.survey_cs_dummy` s
JOIN `your-project-id.retail_analytics_us.cs_tickets_dummy` t
ON s.related_ticket_id = t.ticket_id
GROUP BY t.status
ORDER BY avg_csat DESC;💡 요약 및 인사이트
이번 챕터에서는 고객의 목소리를 정량화해보았습니다.
- NPS: 충성도 측정 (Promoter - Detractor). 우리 서비스의 장기적인 건강 상태를 보여줍니다.
- CSAT: 경험 만족도 (4-5점 비율). 상담 품질을 즉각적으로 보여줍니다.
- 연관성: 보통 주력 제품이나 서비스 경험이 좋을수록(CSAT High), 추천 의향(NPS High)도 높아지는 경향이 있습니다.
다음 단계: 고객들이 왜 불만족할까요? 가장 큰 불만 사유 중 하나인 “반품(Returns)” 데이터를 다음 시간에 분석해봅니다.