필요한 데이터 :
주문일 ➜ 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 로 반환하라는 의미이기 때문에
년도별로 그룹화를 할 수 있게 된다.
'DATABASE' 카테고리의 다른 글
Q. 국가별, 도시별 매출액 조회 (0) | 2023.11.15 |
---|---|
등수 함수 RANK, DENSE_RANK, ROW_NUMBER (0) | 2023.11.07 |
Q. 년도별 고객 1인의 평균 구매액을 조회해보자 ! (0) | 2023.11.07 |
데이터베이스 classicmodels 안에 있는 테이블 & 속성 (0) | 2023.11.06 |
SQL 언어 (0) | 2023.10.20 |