여러 테이블을 수정하고, 조인할 때 CTE를 사용하느냐 마냐에 따라 쿼리 길이도 달라지고, 효율성도 많이 달라진다. 그래서 효율적인 쿼리를 짤려면 CTE를 사용할 줄 알아야 한다.
요구조건 1.
고객들의 월별 주문 횟수를 계산해서 특정 월에 고객의 활동 정보들을 요약해서 출력해 보자!
## 아웃풋 요구조건 : 고객 번호, 고객 이름, 구매 연도, 구매 월, 월별 주문 수
## 001 A 2003 03 5
요구조건 1-1.
customer테이블과 order테이블 join으로 연결하기
select
c.customerNumber,
c.customerName,
o.orderNumber,
o.orderdate
from customers c
## 각 customers테이블과 orders테이블의 customernumber는 같으니까 두 테이블을 조인할 때 맞춰서 join하라
join
orders o
on c.customernumber = o.customerNumber;
요구조건 1-2.
group by 이용해서 연도별, 월별 주문수 집계가 필요하다
select
c.customerNumber,
c.customerName,
-- o.orderDate에서 Year, Month 추출하기
Year(o.orderDate) as orderYear,
Month(o.orderDate) as orderMonth,
-- ordernumber 갯수 세기
count(o.orderNumber) as monthlyordercount
from customers c
join
orders o
on c.customernumber = o.customerNumber
-- 특정 기준에 따라 데이터 행들을 묶는 것
group by
c.customerName,
c.customerNumber,
orderYear, ## Year(o.orderDate)
orderMonth ## Month(o.orderDate)
-- 순서 정렬로, 쿼리 구성에는 큰 의미가 없다.
order by
c.customerNumber,
orderYear;
요구조건 2.
2003년에 주문하고 2004년에는 주문하지 않은 고객을 분석하여서 해당 고객의 리스트를 추출하고 살펴보자!
select
c.customerName,
c.customerNumber,
Year(o.orderDate) as orderYear,
count(o.orderNumber) as monthlyordercount
from customers c
join
orders o
on c.customerNumber = o.customerNumber
where
Year(o.orderDate) != 2004
group by
c.customerName,
c.customerNumber,
Year(o.orderDate);
대학교 중간고사로 인해 한달 가량 휴회기간을 가졌는데 정말 한달이 길면 긴 시간인데... 그동안 농땡이도 피우고, 너무 바빠서 SQL 공부할 시간이 없었다... 그래서 앞으로는 좀 더 바쁜 삶을 살아야하지 않을까 싶다..
📍필수 키워드 : BDA학회, 빅데이터 분석 학회, 대학생 학회, 데이터 분석
728x90
'대외활동 및 인턴 > 빅데이터 분석 학회 BDA' 카테고리의 다른 글
피벗 테이블과 코호트 분석 (BDA학회 SQL 문법 기초 연습반) (0) | 2024.11.14 |
---|---|
metrics : 연도와 월별 성과 지표 및 직원별 성과 분석 SQL (BDA학회 SQL 문법 기초 연습반) (0) | 2024.11.13 |
bda wave (10) | 2024.11.09 |
[강연] 비전공자를 위한 커리어 패스 강연 : 데이터 분석가란? (9) | 2024.11.08 |
쿼리 구조화, CTE 문법 (BDA학회 SQL 문법 기초 연습반) (2) | 2024.10.13 |