A. 금일 학습내용

1. SQL 코드카타 문제: 3개 테이블을 이용한 작가별, 카테고리별 총판매량 출력하기

 

- 처음 풀었던 코드이다.

- 어떤 문제가 있는 것인지 몰랐다.

- 3개의 테이블을 한 번에 사용하는 것은 처음이라 구조적 문제라고 생각하였다.

-- BOOK 도서정보 AUTHOR 저자 정보 BOOK SALES 판매정보
SELECT B.AUTHOR_ID
    , A.AUTHOR_NAME
    , CATEGORY
    , B.PRICE*S.SALES AS SALES
FROM (BOOK B
    INNER JOIN AUTHOR A
    ON B.AUTHOR_ID = A.AUTHOR_ID)
    RIGHT JOIN 
    BOOK_SALES S
    ON B.BOOK_ID = S.BOOK_ID
WHERE DATE_FORMAT(S.SALES_DATE,'%Y-%m')='2022-01'
GROUP BY AUTHOR_NAME
        , CATEGORY
ORDER BY A.AUTHOR_ID
        ,B.CATEGORY DESC

 

- 정답으로 인정된 코드는 아래와 같다.

- 총 판매량을 구하기 위해서는 (1권의 책값 X 판매량) 을 모두 더해야하는 거였다.

- 작가별, 카테고리별 책의 총 판매량을 구하는 문제였기 때문에, 한 작가가 같은 카테고리의 책을 여러 권 집필했을 가능성 또한 고려해야 한다는 것을 너무 늦게 알았다.

- 각 테이블의 구성과 각 데이터의 조합이 어떤 것을 의미하는지 이해하지 못하고 문제부터 풀기 시작한 것이 문제였다.

- 칼럼의 구성 요소와 그 구조를 먼저 보고, 문제를 읽고 구조화시킨 후에 코드를 작성하는 버릇을 들여야겠다.

SELECT B.AUTHOR_ID
    , A.AUTHOR_NAME
    , CATEGORY
    , SUM(B.PRICE*S.SALES) AS TOTAL_SALES
FROM (BOOK B
    INNER JOIN AUTHOR A
    ON B.AUTHOR_ID = A.AUTHOR_ID)
    RIGHT JOIN 
    BOOK_SALES S
    ON B.BOOK_ID = S.BOOK_ID
WHERE DATE_FORMAT(S.SALES_DATE,'%Y-%m')='2022-01'
GROUP BY AUTHOR_NAME
        , CATEGORY
ORDER BY A.AUTHOR_ID
        ,B.CATEGORY DESC

+ Recent posts