본문으로 건너뛰기
커리어 전환

마케터에서 데이터 분석가로, JOIN 뒤 주문금액이 늘었다면?

데이터 분석 전환을 준비하는 마케터를 위한 주문·쿠폰 결합 실습입니다. 일대다 관계에서 금액이 중복 합산되는 이유를 찾고, 주문별 사전 집계와 행 수·고유 주문 수·합계 점검으로 결과를 검증합니다.

쿼리가 실행돼도 합계는 틀릴 수 있어요

마케팅 보고서를 데이터 분석 과제로 발전시키고 싶다면 차트보다 먼저 표를 합치는 과정을 점검해보세요. 주문 하나에 쿠폰이 여러 개 연결되면 주문금액도 여러 행에 반복됩니다. 실행 오류가 없더라도 그대로 합산하면 원래보다 큰 숫자가 나옵니다.

PostgreSQL 공식 문서는 JOIN 조건에 맞는 상대 행마다 결과 행이 만들어진다고 설명합니다. LEFT JOIN은 연결되는 상대가 없는 왼쪽 행도 남깁니다. 아래는 이 원리를 연습하기 위해 만든 가상 데이터이며 실제 매출·고객 자료가 아닙니다.

주문 세 건과 쿠폰 세 건을 준비하세요

주문 표는 주문 ID마다 한 행입니다. 금액은 할인 전 주문금액으로 정하고, 취소·환불은 없는 연습 조건입니다.

  • 주문 O1: 10,000원.
  • 주문 O2: 10,000원.
  • 주문 O3: 20,000원.

쿠폰 표의 한 행은 쿠폰 사용 한 건입니다. O1에는 1,000원과 500원 쿠폰 두 건, O2에는 1,000원 쿠폰 한 건, O3에는 사용 기록이 없습니다. 원래 주문 수는 3건, 주문금액 합계는 40,000원, 할인 합계는 2,500원입니다.

주문 표를 왼쪽에 놓고 주문 ID로 LEFT JOIN해보세요. 결과는 O1 두 행, O2 한 행, O3 한 행으로 총 4행입니다. O1의 10,000원이 두 번 등장하므로 주문금액을 더하면 50,000원이 됩니다. 쿠폰 할인 때문에 주문금액이 늘어난 것이 아니라 결합된 행에서 같은 금액을 반복해서 센 것입니다.

지우기 전에 필요한 결과 단위를 정하세요

목표가 ‘주문별 금액과 총 할인액’이라면 먼저 쿠폰 표를 주문 ID별로 묶어 할인액을 합산합니다. O1은 1,500원, O2는 1,000원인 두 행이 됩니다. 이 결과를 주문 표에 LEFT JOIN하면 주문 한 건당 한 행을 유지할 수 있습니다.

O3의 쿠폰 쪽 값은 NULL로 남습니다. 이번 가상 자료는 쿠폰 기록이 완전하고 미사용이면 행이 없다고 정했으므로 할인액을 0으로 표시할 수 있습니다. 실제 데이터에서 수집 누락인지 모른다면 같은 처리를 바로 적용하지 마세요.

금액이 같은 행을 지우는 것은 해결책이 아닙니다. 10,000원 주문인 O1과 O2는 서로 다른 정상 주문입니다. 금액의 중복만 제거해 합산하면 30,000원이 되어 이번에는 줄어듭니다. 반대로 쿠폰별 상세가 목적이라면 여러 행을 유지하되 주문금액을 단순 합산하지 않는 설계가 필요합니다.

결합 전후 네 항목을 대조하세요

  • 행 수: 주문별 최종 표는 3행인가요? 원시 결합의 4행과 차이를 설명할 수 있나요?
  • 고유 주문 ID 수: 어느 단계에서도 O1·O2·O3 세 건이 보존되나요?
  • 주문금액 합계: 주문별 최종 표의 합계가 원본과 같은 40,000원인가요?
  • 할인 합계: 최종 표의 2,500원이 쿠폰 원본 합계와 일치하나요?

오늘은 이 자료로 원시 결합과 주문별 사전 집계 후 결합을 각각 실행해보세요. 사용한 쿼리·예상값·실제 결과·차이가 난 이유를 남기면 됩니다. 이 검산은 결합 정확성을 확인하는 연습이지 쿠폰의 매출 증대 효과를 입증하는 분석은 아닙니다. 회사 주문 원본이나 접속 정보를 공개 과제에 넣지 마세요.

자료 정리와 초안 작성에 AI를 활용한 공식 정보성 글입니다. 예시는 실제 개인 경험이나 채용 성공 사례가 아닙니다.

출처 및 편집

폴리오쉽 에디터 · 공식 에디토리얼

PostgreSQL · Table Expressions ↗

마케터에서 데이터 분석가로, JOIN 뒤 주문금액이 늘었다면? — 폴리오쉽 토픽
조회 0좋아요 0댓글 0

이 글에 대한 이야기

댓글과 답글로 경험을 나눠보세요.

댓글 작성 · 좋아요 · 공유하기