Skip to Content

02. 고객 만족도 지표 분석 (NPS & CSAT)

중급2시간

1. 개요 및 시나리오

상황: 티켓 처리를 열심히 하고 있지만, 정작 고객들이 만족하고 있는지는 알 수 없습니다. CEO가 회의에서 이렇게 물어봅니다.

“우리 서비스 좋다고 추천하는 사람이 얼마나 돼요? (NPS)” “상담 받은 사람들 불만은 없나요? (CSAT)”

이번 챕터에서는 **NPS(순추천고객지수)**와 **CSAT(고객만족도)**라는 두 가지 핵심 지표를 직접 계산하고 분석해봅니다.


2. 데이터 준비

이번에는 새로운 테이블인 survey_cs_dummy를 사용합니다.

# BigQuery 연결 설정 (01. CS 티켓 탐색과 동일) from google.cloud import bigquery client = bigquery.Client()

데이터 구조

survey_cs_dummy 테이블의 주요 컬럼입니다:

  • user_id: 고객 ID
  • nps_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로 분류하고, 각 그룹의 비율을 구하세요.

💡

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 점수를 계산하세요.

정답 코드 보기

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점 이상을 준 비율(%)을 구하세요.

정답 코드 보기

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 점수를 구하세요.

💡

Hint: related_ticket_idticket_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;

💡 요약 및 인사이트

이번 챕터에서는 고객의 목소리를 정량화해보았습니다.

  1. NPS: 충성도 측정 (Promoter - Detractor). 우리 서비스의 장기적인 건강 상태를 보여줍니다.
  2. CSAT: 경험 만족도 (4-5점 비율). 상담 품질을 즉각적으로 보여줍니다.
  3. 연관성: 보통 주력 제품이나 서비스 경험이 좋을수록(CSAT High), 추천 의향(NPS High)도 높아지는 경향이 있습니다.

다음 단계: 고객들이 왜 불만족할까요? 가장 큰 불만 사유 중 하나인 “반품(Returns)” 데이터를 다음 시간에 분석해봅니다.

Last updated on

🤖AI 모의면접실전처럼 연습하기