Lv.3 카테고리 별 도서 판매량 집계하기
작성 답안
BOOK 테이블을 B로, BOOK_SALES 테이블을 S로 지정해서 JOIN에 이용한다.
결과값이 카테고리를 기준으로 출력되어야 하기 때문에 카테고리로 그룹화 하여 이용한다.
S 테이블에서 SALES 컬럼 값을 (카테고리별로) SUM 연산 해준 값을 TOTAL_SALES 컬럼으로 출력한다. 앞서 이후에 카테고리를 기준으로 그룹화 할 것을 예상했기 때문에 SUM 연산이 카테고리를 기준으로 이루어질 것임을 알 수 있다.
INNER JOIN을 이용해 B 테이블의 BOOK_ID와 S테이블의 BOOK_ID가 동일한 경우(교집합인 경우)를 출력한다.
이때, 2022년 1월 판매량을 파악하는것이기 때문에 LIKE를 이용해 조건을 걸어주고, 오름차순 정렬을 위해 ORDER BY 구문을 이용한다.
SELECT B.CATEGORY, SUM(S.SALES) AS TOTAL_SALES FROM BOOK AS B
INNER JOIN BOOK_SALES AS S ON B.BOOK_ID = S.BOOK_ID
WHERE S.SALES_DATE LIKE '2022-01%'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY ASC;
JOIN
두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것.
- INNER JOIN
기본 JOIN 방식
두 테이블을 지정할 때, 두 테이블에서 모두 지정한 열의 데이터가 있어야 한다. (교집합) - OUTER JOIN
두 테이블을 지정할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. (합집합)
- LEFT OUTER JOIN / RIGHT OUTER JOIN / FULL OUTER JOIN
- CROSS JOIN
한 테이블의 모든 행과 다른 테이블의 모든 행을 조인한다.
결과의 전체 행의 개수는 두 테이블의 각 행의 개수를 곱한 수와 같다. - SELF JOIN
자신과 조인하기 때문에 1개의 테이블을 사용한다.