본문 바로가기
DATABASE

Q. 일자별, 월별, 년도별 매출액을 조회해보자 !

by nyang2 2023. 11. 6.

필요한 데이터 :

주문일  ➜ Orders 테이블에 orderDate 데이터

판매액 (자동차별 금액 * 판매수량)  ➜ Orderdetails 테이블에 PriceEach * Orderdetails 테이블에 QuantityOrdered

 

조회방법

1. 필요한 데이터들이 들어있는 Orders 와 Orderdetails 테이블을 조인한다.

해석
classicmodels.orders 를 A라 칭하고 classicmodels.orderdetails 는 B라고 칭한다.
A 테이블과 B 테이블을 left join 해줄 건데 이 때, orderNumber 가 같은 것끼리 묶어서 join 해주게 된다.
이 join 한 데이터에서 orderDate 와 priceEach 와 quantityOrdered 데이터를 조회할 수 있다.

 

 

2. 일자별 매출액을 구한다.

해석
1번에 join 한 데이터에서 '일자별'을 구하기 위해 group by 이용
group by 란? 특정 컬럼을 기준으로 데이터를 그룹지어준다.
group by 1 란? 1로 그룹화 해줄 거야! 여기서의 1은 조회하는 select 절에서 첫 번째로 작성한 것 즉, A.orderdate 를 뜻한다.
A.orderDate (일자) 로 그룹화 하여 매출액을 구해주게 된다.

 

 

3. 월별 매출액을 구한다.

해석
2번 내용에서 그룹화를 해줄 때 A.orderDate ➜ substr(A.orderDate,1,7) 로 변경되었다.
substr() 란? 문자열을 반환해주는 함수이다.
substr(반환할데이터, 시작위치, 반환갯수)
즉, substr(A.orderDate, 1, 7) 란? A.orderDate 에 있는 데이터를 첫번째문자열부터 7번째문자열까지 반환시켜주게 된다.
A.orderDate 에 있는 데이터는 YYYY-MM-DD 형태로 저장되어 있기 때문에 1,7 ➜ YYYY-MM 의 형태로 반환시켜주어, 데이터의 월별로 그룹화할 수 있게 된다.

 

 

4. 년도별 매출액을 구한다.

해석
3번의 내용에서 substr(orderDate,1,7) ➜ substr(orderDate,1,4) 로 변경되었다.
이 말은 YYYY-MM-DD 데이터를 YYYY-MM 에서 YYYY 로 반환하라는 의미이기 때문에
년도별로 그룹화를 할 수 있게 된다.