데이터 분석의 기초가 되는 SQL을 이용해 데이터를 조회해보도록 하겠습니다.
1. 매출액(일자별, 월별, 연도별)
2. 구매자 수, 구매 건수(일자별, 월별, 연도별)
3. 인당 매출액(연도별)
4. 건당 구매 금액(연도별)
1) 매출액(일자별, 월별, 연도별)
a) 일별 매출액 조회
일별 매출액을 조회하려면 주문일과 판매금액이 필요합니다.
ERD를 보면 주문 일자(orderdate)는 orders 테이블에 존재하고, 판매액(priceEach x quantityOrdered)은 orderdetails 테이블에 존재합니다. 따라서, 해당 테이블 두 개를 결합해야 합니다.
SELECT A.ORDERDATE,
PRICEEACH*QUANTITYORDERED
FROM CLASSICMODELS.ORDERS A
LEFT
JOIN CLASSICMODELS.ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
ordernumber 기준으로 주문(order) 테이블에 있는 데이터를 모두 조회하기 위해 LEFT JOIN으로 결합합니다.
이를 일별 매출액을 조회하기 위해 ORDERDATE로 그룹핑한 뒤, 각 상품의 가격과 구매 횟수를 곱한 값의 합을 집계하면 일별 매출액을 계산할 수 있습니다.
SELECT A.ORDERDATE, SUM(PRICEEACH*QUANTITYORDERED) AS SALES
FROM CLASSICMODELS.ORDERS A
LEFT
JOIN CLASSICMODELS.ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP
BY 1
ORDER
BY 1;
b) 월별 매출액 조회
판매일(orderdate)은 'yyyy-mm-dd'의 형태로 구성되어 있습니다. orderdate에서 'yyyy-mm'만 추출할 수 있다면, 월별 매출액을 조회할 수 있습니다. 이를 위해 문자열에서 원하는 문자만 호출하는 함수 SUBSTR()을 사용하면 가능합니다.
*문자열에서 원하는 부분만 가져오기
Syntax
-SUBSTR(문자열,위치,길이)
예를 들어, SUBSTR('ABCED',2,3)을 수행하면 ABCED의 2번 즉 B에서부터 3개의 문자열을 가져옵니다.
실행결과는 'BCD'가 됩니다.
이를 이용해 월별 매출액을 조회해볼까요?
SELECT SUBSTR(A.ORDERDATE,1,7) MM,
SUM(PRICEEACH*QUANTITYORDERD) AS SALES
FROM CLASSICMODELS.ORDERS A
LEFT
JOIN CLASSICMODELS.ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP
BY 1
ORDER
BY 1
c) 연도별 매출액 조회
연도별 매출액은 월별 매출액과 동일한 방법으로 조회할 수 있습니다.
'yyyy'만 추출하도록 SUBSTR()함수만 조정해주면 됩니다.
SELECT SUBSTR(A.ORDERDATE,1,4) MM,
SUM(PRICEEACH*QUANTITYORDERD) AS SALES
FROM CLASSICMODELS.ORDERS A
LEFT
JOIN CLASSICMODELS.ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP
BY 1
ORDER
BY 1
오늘은 간단하게 매출액 조회를 살펴봤습니다.
한 달 동안 텍스트 마이닝 대회 준비, 진로 고민, 휴식을 가지며 2021년을 맞이했습니다.
(자체평가로)중급 단계도 되지 않은 상태에서 텍스트 마이닝 대회에 참여하려니 자신감이 떨어지는 저를 발견했습니다.
그래서 다시 기초에 집중해보자 + 하나라도 완벽히 끝내보자! 라는 마음으로 SQL 책을 펼쳤습니다.
어려운 시기가 길어지고 있는데 우리 모두 지치지 말고 힘내봅시다!
방문자님들 모두 새해 복 많이 받으세요 :)
*포스팅 내용은 아래에 링크된 <SQL로 맛보는 데이터 전처리 분석>을 (99.98%)참고하여 작성했습니다.
'SQL' 카테고리의 다른 글
[SQL 챌린지] 해커랭크 정복하기 Day 1 (0) | 2021.02.20 |
---|---|
[SQL 챌린지] 해커랭크 정복하기 Day 1 (0) | 2021.02.20 |
[SQL/프로그래머스] 어린 동물 찾기 (0) | 2021.01.22 |
[SQL/프로그래머스] 아픈 동물 찾기 (0) | 2021.01.22 |
[SQL/프로그래머스] 상위 n개 레코드 (0) | 2021.01.21 |