위 문제의 요점은
1. 2022년 1월의 판매량만을 합산하여야 하고
2. 카테고리로 그룹을 묶으며
3. 카테고리명으로 오름차순 정렬을 한다.
위 테이블을 보고 하나씩 해결해 보면
일단 1. 2022년 1월의 판매량 만을 합산한다를 sql로 바꿔 보면
SELECT A.CATEGORY, SUM(B.SALES) TOTAL_SALES
FROM BOOK A INNER JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID
WHERE B.SALES_DATE BETWEEN "2022-01-01" and "2022-01-31"
SELECT절에 SUM을 이용하여 판매량의 합산을 구하며, WHERE절의 BETWEEN을 이용하여 2022년 1월의 판매량 만을 조회한다.
또한 이 값들은 서로 다른 테이블에 존재함으로 JOIN 을 이용해서 값을 조회하는데 도서의 판매량이 존재하는 테이블을 조회 해야 함으로 INNER JOIN을 사용하여 테이블의 BOOK_ID가 공통된 부분만을 조회한다.
그다음 2. 카테고리로 그룹을 묶는걸 sql로 바꿔 보면
GROUP BY A.CATEGORY
GROUP BY절을 이용하여 카테고리로 묶는다.
마지막으로 3. 카테고리명으로 오름차순 정렬을 하는 sql은
ORDER BY A.CATEGORY ASC;
ORDER BY를 사용하면 되고
이를 전부 합치면 아래와 같은 sql문이 나오게 된다.
SELECT A.CATEGORY, SUM(B.SALES) TOTAL_SALES
FROM BOOK A INNER JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_ID
WHERE B.SALES_DATE BETWEEN "2022-01-01" and "2022-01-31"
GROUP BY A.CATEGORY
ORDER BY A.CATEGORY ASC;
'코딩테스트' 카테고리의 다른 글
프로그래머스 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.09.04 |
---|---|
프로그래머스 조건별로 분류하여 주문상태 출력하기 (0) | 2023.09.04 |
프로그래머스 오랜 기간 보호한 동물(2) (0) | 2023.09.02 |
프로그래머스 있었는데요 없었습니다 (0) | 2023.09.02 |
프로그래머스 오랜 기간 보호한 동물(1) (0) | 2023.09.01 |