총매출만 보면 어느 메뉴가 몇 개 팔렸는지, 어떤 카테고리가 매출에서 차지하는 비중이 큰지 알기 어렵다. 메뉴별 판매수량과 매출액을 함께 보려면 먼저 POS 원자료의 열과 포함 기준을 정리한 뒤 피벗 테이블로 집계해야 한다.
피벗 테이블은 데이터를 요약하고 정렬하며 필터링하는 도구다. 그러나 원자료의 취소, 할인, 서비스 메뉴가 어떻게 기록되는지 확인하지 않으면 보기 좋은 표가 잘못된 합계를 보여줄 수 있다. 이 글에서는 특정 POS 방식을 가정하지 않고, 확인된 원자료를 기준으로 메뉴별 매출표를 만드는 방법을 설명한다.
먼저 원자료의 필수 열을 확인한다
메뉴 분석에 필요한 최소 열은 다음과 같다.
| 열 이름 | 용도 | 확인할 내용 |
|---|---|---|
| 거래일 또는 영업일 | 분석 기간 필터 | 자정 이후 거래 처리 기준 |
| 거래ID | 중복과 취소 연결 | POS에서 제공하는 식별값 여부 |
| 표준상품명 | 메뉴별 행 분류 | 원본상품명과 매핑 규칙 |
| 카테고리 | 메뉴군 필터 | 분류값의 일관성 |
| 판매수량 | 메뉴 판매량 합계 | 취소가 음수인지 별도 행인지 |
| 매출금액 | 메뉴 매출 합계 | 할인·세금 포함 기준 |
| 거래상태 | 정상·취소 등 구분 | 포함할 상태의 정의 |
원본상품명은 보존하고 분석용 표준상품명을 별도 열로 둔다. 이름이 비슷하다는 이유만으로 가격이나 규격이 다른 메뉴를 합치지 않는다. 카테고리가 비어 있다면 확인 전 임의 분류보다 미분류 상태로 두고 매핑표를 갱신한다.
분석 범위를 먼저 적는다
피벗을 만들기 전에 표 상단이나 별도 분석기준 탭에 기간과 포함 규칙을 기록한다.
- 분석 시작일과 종료일
- 달력 날짜와 POS 영업일 중 사용할 기준
- 정상 거래 포함 여부
- 취소 거래 처리 방식
- 할인 금액의 반영 기준
- 서비스·증정 메뉴 포함 여부
- 세트와 옵션 행 처리 방식
이 규칙은 POS 원자료에서 실제로 확인한 방식에 맞춰야 한다. 확인되지 않은 항목은 임의 계산하지 않고 결과표에 확인필요라고 표시한다.
피벗 테이블을 새 시트에 만든다
정제된 원자료 전체와 머리글을 선택한 뒤 피벗 테이블을 새 시트에 만든다. 시트 이름은 메뉴별_피벗처럼 목적이 드러나게 정한다. 원자료 중간에 빈 머리글이나 합계 행이 있으면 범위가 잘못 인식될 수 있으므로 먼저 제거하거나 데이터 영역에서 제외한다.
기본 배치는 다음과 같다.
| 피벗 영역 | 넣을 필드 | 결과 |
|---|---|---|
| 행 | 카테고리, 표준상품명 | 카테고리 아래 메뉴 목록 |
| 값 | 판매수량 합계 | 메뉴별 판매 개수 또는 원자료 단위 합계 |
| 값 | 매출금액 합계 | 메뉴별 매출액 합계 |
| 필터 | 거래일·영업일 | 기간 선택 |
| 필터 | 거래상태 | 포함할 거래 상태 선택 |
카테고리를 먼저, 표준상품명을 다음 행 필드로 두면 메뉴군별로 펼쳐 볼 수 있다. 메뉴만 필요하면 표준상품명 하나만 행에 둔다.
판매수량과 매출액을 함께 읽는다
판매수량이 많아도 단가가 낮으면 매출액 비중은 다를 수 있고, 매출액이 큰 메뉴라도 판매 건수는 적을 수 있다. 따라서 한 지표만으로 인기나 중요도를 단정하지 않는다.
값 필드가 합계가 아닌 개수로 표시되면 원자료가 숫자가 아니라 문자로 저장됐을 수 있다. 정제 탭으로 돌아가 판매수량과 매출금액 형식을 확인한다. 피벗에서 강제로 고치는 것보다 원자료 형식을 바로잡고 새로고침하는 편이 추적하기 쉽다.
매출금액이 음수인 행은 취소나 조정일 수 있다. 무조건 삭제하지 말고 거래상태와 POS 기준을 확인한다. 서비스 메뉴의 금액이 0이어도 판매수량에 포함할지는 분석 목적에 따라 정하되 규칙을 기록한다.
매출 구성비를 표시한다
메뉴별 매출 구성비는 해당 메뉴 매출액을 같은 분석 범위의 전체 매출액으로 나눈 값이다. 피벗 테이블 값 표시 옵션에서 전체 합계 대비 비율을 사용할 수 있다면 같은 매출금액 필드를 한 번 더 추가해 구성비로 표시한다. 기능 표시가 다르면 피벗 결과 옆에서 계산하되 분모가 같은 기간·상태 필터를 반영하는지 확인한다.
| 표준상품명 | 판매수량 | 매출금액 | 매출 구성비 |
|---|---|---|---|
| 메뉴A | 0 | 0 | 0% |
| 메뉴B | 0 | 0 | 0% |
| 전체 | 0 | 0 | 100% |
0은 양식 예시다. 실제 표에서는 검증된 값으로 바꾼다. 구성비 합계가 반올림 때문에 정확히 100%로 보이지 않을 수 있으므로 표시 자릿수와 원값을 구분한다.
판매수량 구성비와 매출 구성비도 서로 다르다. 어떤 비율을 보여주는지 열 이름에 명확히 적는다.
기간과 카테고리 필터를 사용한다
기간 필터는 같은 길이의 구간을 비교할 때 유용하지만 요일, 휴무, 영업시간이 다르면 단순 비교가 왜곡될 수 있다. 날짜만 바꿔 결론을 내리지 말고 비교 조건을 함께 기록한다.
카테고리 필터로 식사, 음료, 추가 메뉴처럼 매장 분류를 선택할 수 있다. 미분류 항목이 계속 남으면 피벗 결과에서 숨기기보다 상품 매핑표를 확인한다. 분류 변경이 있었다면 적용시작일을 남겨 과거 데이터와 현재 분류가 섞이지 않게 한다.
원본 합계와 반드시 대조한다
피벗을 만든 뒤 다음 세 가지를 검증한다.
판매수량 대조
같은 기간과 거래상태를 적용한 정제 원자료의 판매수량 합계와 피벗 전체 합계를 비교한다. 취소를 포함하거나 제외한 기준이 양쪽에서 같은지 확인한다.
매출금액 대조
원자료 매출금액 합계와 피벗 전체 합계를 비교한다. POS 화면 합계와도 비교하려면 할인, 세금, 취소 포함 기준이 동일한지 먼저 확인한다.
메뉴 수와 미분류 대조
원자료의 고유 표준상품명 수와 피벗에 나타난 메뉴 수를 비교한다. 빈 상품명, 미분류, 필터로 제외된 항목이 있는지 확인한다.
| 검증 항목 | 원자료 | 피벗 | 차이 | 판정 |
|---|---|---|---|---|
| 판매수량 합계 | 0 | 0 | 0 | 확인 전 |
| 매출금액 합계 | 0 | 0 | 0 | 확인 전 |
| 고유 메뉴 수 | 0 | 0 | 0 | 확인 전 |
차이가 나면 피벗 결과를 수동으로 맞추지 말고 원자료 범위, 필터, 숫자 형식, 빈 상품명, 중복 행을 순서대로 확인한다.
메뉴 순위를 해석할 때 주의할 점
판매수량과 매출액은 메뉴 운영 판단에 필요한 일부 정보다. 재료비, 조리시간, 할인, 폐기, 주문 채널 비용이 포함되지 않았으므로 매출액만으로 수익성을 판단할 수 없다. 판매량이 적다는 이유만으로 메뉴 폐지를 결론 내리지 않는다.
또한 기간이 짧거나 휴일·행사·예약이 포함되면 평소와 다른 결과가 나올 수 있다. 결과표에는 분석 기간과 특이사항을 함께 적고, 관찰과 해석을 구분한다. 메뉴A의 판매수량이 가장 많았다는 관찰과 고객이 메뉴A를 선호한다는 해석은 같은 문장이 아니다.
최종 점검표
- 원본상품명과 표준상품명이 분리되어 있는가
- 거래일, 수량, 금액이 올바른 형식인가
- 취소·할인·서비스 메뉴 처리 규칙을 실제 POS 기준으로 정했는가
- 피벗 행에 메뉴, 값에 수량과 매출액이 배치되었는가
- 기간·카테고리·거래상태 필터가 적용되었는가
- 구성비의 분모와 지표 이름이 명확한가
- 원자료와 피벗의 수량·금액 합계가 일치하는가
- 매출액만으로 수익성을 단정하지 않았는가
메뉴별 매출표는 피벗을 만드는 것으로 끝나지 않는다. 정제된 원자료, 명확한 포함 기준, 원본 합계 대조가 함께 있어야 결과를 다시 확인할 수 있다. 하루치 자료로 먼저 시험한 뒤 기간을 늘리면 오류를 찾기 쉽다.
공식 출처
최종 확인일: 2026-08-06