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를 그룹핑 + 고객 번호CUSTOMERNUMBERCOUNT
※ 구매자 수, 구매 건수를 산출할 때는 보통 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 ;