본문 바로가기
Specialist/SQL

[빅쿼리-SQL] 매출 데이터 분석 '한방 정리' 쿼리

by 홍원 2022. 5. 9.

매출 데이터를 급하게 분석해 달라는 요구에 신속하게 대응하기 위해서는 기준점이 되는 매출 지표를 알고 있어야 한다. 이번 글에서는 기본적인 매출 지표엔 어떤 것이 있는지 모르는 학생들과, 신속하게 매출 분석을 해야 하는 분석가들을 위해 매출 분석의 기준이 되는 매출 지표를 알아보고, 그것을 SQL 문으로 작성하는 방법을 알아보겠다.


샘플 데이터

캐글-Superstore Sales Dataset을 정제한 데이터 셋입니다.

출처 : https://www.kaggle.com/datasets/rohitsahoo/sales-forecasting

샘플 데이터 예시

  • 데이터 세트 : ch4
  • 테이블 명 : sale_data
  • Date(date) : 주문 일자
  • Order_id(string) : 주문 ID
  • Customer_id(string) : 고객 ID
  • Product_id(string) : 상품 ID
  • Sale(integer) : 가격

전체 쿼리 먼저 보기

전체 쿼리


전체 쿼리 뜯어보기

전체 쿼리를 색깔별로 구분한 박스들의 SQL 문을 하나씩 해석해보며 전체 쿼리를 이해해 보겠다. 


1. 하늘색 박스 - WITH 절 

WITH 절이란 임시 테이블을 만드는 SQL 구문이다. 분석을 하다 보면 '기존 테이블을 변형시켜서 새로운 테이블을 만들면 , 더 다양한 분석을 할 수 있을지도 몰라'라는 생각이 드는 경우가 있다. 하지만, 테이블 생성 권한이 없을 경우 그러한 아이디어를 포기하게 되는데, 그때 WITH 절을 통해 임시로 테이블을 만들 수 있다.

WITH 절은 작성한 쿼리문 내에서만 실행되는 것이 특징이다. 가독성이 높고 보수하기 쉬운 코드를 만들기 위해서는 with 절을 적극 활용해야 한다.

WITH 임시 테이블명 AS ( )


2. 빨간색 박스 - 일별 매출을 나타내는 임시 테이블(daily_purchase2) 

기존 테이블이었던 sale_data의 열을 활용하여, 일별 매출을 나타내는 daily_purchase2라는 새로운 임시 테이블을 만들었다. 쿼리 해석 및 쿼리 결과는 다음과 같다.

빨간색 박스 쿼리 해석 및 daily_purchase2 임시테이블의 결과

연도, 월, 일을 구하기 위해서 기존 DATE 열의 DATE 스키마를 CAST 함수를 사용해 STRING 스키마로 변경 후 SUBSTR 함수를 사용해 문자열 자르기.

(DATE 스키마에서는 EXTRACT(YEAR FROM 열 이름) 함수를 사용하여 연도를 바로 뽑아낼 수 도 있다.(month, date 도 적용 가능))


3. 주황색 박스 - 월별 매출지표를 나타내는 임시 테이블(monthly_purchase2)

monthly_purchase2 임시테이블 쿼리 해석
monthly_purchase2 임시테이블의 결과

with 절로 만든 임시 테이블은 한 쿼리 내에서 임시로 만들어지는 테이블이기 때문에, 주황색 박스의 결과를 보기 위해서는 빨간색 박스가 반드시 전제되어야 한다. 

월별 매출 분석 지표에는 월별 주문 개수, 월별 매출 평균, 월별 매출 총합이 있다는 것을 알아두자.


4. 검은색 박스 - 최종 매출 지표

전제되어야 하는 하늘색 박스는 생략하였다. with 절로 만든 임시 테이블을 이용해 최종 매출 지표를 구성해보았다.

검정색 박스 쿼리 해석

매출지표 : 월별 주문 개수, 월별 매출 평균, 월별 매출 총합, 연도별 매출 누적합, 작년 월별 매출액, 현재 월-작년 월 증감률

연도별 매출 누적합에서 over(... ROWS UNBOUNDED PRECENDING) 은 처음 소개를 하므로 간략하게 설명하겠다.

ROW 함수 : 부분집합인 윈도 크기를 물리적인 단위로 행 집합을 지정

UNBOUNDED PRECEDING : 윈도의 시작 위치가 첫 번째 ROW

 

최종 도출 결과


이번 글에서는 판매 데이터를 이용해 기본적인(하지만 매우 중요한) 매출 지표들을 sql문을 사용해 구현해보았다.

매출 지표의 기준이 되는 내용들이니 만큼, 이 지표에서 확장하여 더 좋은 매출 지표들을 만들어 낼 수 있을 것이다.

댓글