SELECT A.ORDERDATE, PRICEEACH * QUANTITYORDERED
FROM ORDERS A
LEFT JOIN ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER;
일별 매출액
=ORDERDATE
로 그룹핑 + 매출액의 합을 집계 (SUM
)
SELECT A.ORDERDATE, SUM(PRICEEACH * QUANTITYORDERED) AS SALES
FROM ORDERS A
LEFT JOIN ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP BY 1
ORDER BY 1;
판매일(ORDERDATE)
= FORMAT ('yyyy-mm-dd
')
→ ORDERDATE
에서 'mm-dd
' 만 가져오려면?
SUBSTR
문자열에서 원하는 부분만 가져오기
SUBSTR
(문자열, 위치, 길이)
SUBSTR
로 월별 매출 구하기SELECT SUBSTR(A.ORDERDATE, 1, 7) 'YYYY-MM',
SUM(PRICEEACH*QUANTITYORDERED) AS SALES
FROM ORDERS A
LEFT JOIN ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP BY 1
ORDER BY 1;
SELECT SUBSTR(A.ORDERDATE, 1, 4) 'YEAR',
SUM(PRICEEACH*QUANTITYORDERED) AS SALES
FROM ORDERS A
LEFT JOIN ORDERDETAILS B
ON A.ORDERNUMBER = B.ORDERNUMBER
GROUP BY 1
ORDER BY 1;
구매 고객 번호 =
CUSTOMERNUMBER
판매일ORDERDATE
를 그룹핑 + 고객 번호CUSTOMERNUMBER
COUNT
※ 구매자 수, 구매 건수를 산출할 때는 보통 UNIQUE하게 필트를 COUNT 해주어야 한다.
고객 번호 | 주문 번호 | 판매일 |
---|---|---|
SY | N001 | 2022.08.14 |
SY | N002 | 2022.08.14 |
SY 고객이 2022.08.14 에 2건을 구매한다면,
ORDERS
테이블에 SY 고객의 2가지 구매 건이 기록
→ 만약 고객 번호를 UNIQUE하게 COUNT 하지 않는다면,
SY 고객은 2022.08.14에 구매자 수가 2번 COUNT 되는 상황이 발생
SELECT ORDERDATE, CUSTOMERNUMBER, ORDERNUMBER
FROM ORDERS;
SELECT ORDERDATE, CUSTOMERNUMBER, ORDERNUMBER
FROM ORDERS
ORDER BY CUSTOMERNUMBER ;
→
CUSTOMERNUMBER
에서 동일한 고객 번호가 여러 줄 생성되어 있음을 확인
: 한 명의 고객이 여러 번 구매하는 경우
따라서, 고객 번호는 중복을 제외한 값을 COUNT 해야 함
⇒ DISTINCT
사용
SELECT ORDERDATE, COUNT(DISTINCT CUSTOMERNUMBER) N_PURCHASER, COUNT(ORDERNUMBER) N_ORDERS
FROM ORDERS
GROUP BY 1
ORDER BY 1;
SELECT SUBSTR(ORDERDATE, 1, 7) 'YYYY-MM',COUNT(DISTINCT CUSTOMERNUMBER) N_PURCHASER, COUNT(ORDERNUMBER) N_ORDERS
FROM ORDERS
GROUP BY 1
ORDER BY 1;
SELECT SUBSTR(ORDERDATE, 1, 4) 'YEAR', COUNT(DISTINCT CUSTOMERNUMBER) N_PURCHASER, COUNT(ORDERNUMBER) N_ORDERS
FROM ORDERS
GROUP BY 1
ORDER BY 1;
고객의 인당 매출액 = 고객의 Loyalty를 측정하는 요인으로 사용될 수 있음
기간별 평균 인당 고객 매출액을 비교하면 고객 1명이 서비스에 얼마를 지불하는지 변화를 파악할 수 있음
연도별 인당 매출액
= 연도별 매출액
/ 구매자 수
SELECT
FROM
LEFT JOIN
ON
GROUP BY
ORDER BY ;