[프로그래머스] LEVEL4 저자 별 카테고리 별 매출액 집계하기(SQL)

Loopy·2023년 10월 19일
1

프로그래머스

목록 보기
31/32
post-thumbnail

[프로그래머스] LEVEL4 저자 별 카테고리 별 매출액 집계하기


🧐 문제 설명


😍 나의 풀이

SELECT BOOK.AUTHOR_ID, AUTHOR_NAME, CATEGORY, SUM(PRICE * SALES) AS TOTAL_SALES
FROM BOOK
LEFT JOIN AUTHOR ON BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID
LEFT JOIN BOOK_SALES ON BOOK.BOOK_ID = BOOK_SALES.BOOK_ID
WHERE SALES_DATE LIKE '2022-01-%'
GROUP BY AUTHOR_ID, CATEGORY
ORDER BY AUTHOR_ID, CATEGORY DESC;
  1. BOOK, AUTHOR, BOOKS_SALES 3가지 테이블 조인하기
  • 문제에서 요구하는 저자ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES)을 구하려면, 도서 정보 테이블(BOOK), 도서의 저자 정보 테이블(AUTHOR), 도서의 날짜 별 판매량 정보 테이블(BOOKS_SALES) 총 3가지 테이블을 조인해야 합니다.

  • BOOK 테이블을 기준으로 나머지 두 테이블과의 공통된 속성을 이용하여 JOIN 하는 것이 우선입니다. BOOK 테이블과 AUTHOR 테이블은 공통된 속성이 AUTHOR_ID이므로 이를 이용하여 LEFT JOIN 하고, BOOK 테이블과 BOOK_SALES 테이블은 공통된 속성이 BOOK_ID이므로 이를 이용하여 LEFT JOIN 했습니다.

  1. 저자별, 카테고리별로 데이터 그룹화하기(GROUP BY)

아래 쿼리를 이용하여 그룹화하기 전 데이터를 확인하면 다음과 같이 나옵니다.

  • 저자별, 카테고리별로 데이터를 그룹화하기 위해서 'GROUP BY AUTHOR_ID, CATEGORY'로 작성했습니다. GROUP BY에 대상 컬럼이 2개 이상인 경우, 첫 번째 컬럼(AUTHOR_ID)으로 먼저 그룹이 묶이고, 두 번째 컬럼(CATEGORY)으로 그룹이 묶여서 집계가 됩니다.

  • AUTHOR_ID로 '1', '2', '3' 먼저 그룹이 묶이고(각 저자명(AUTHOR_NAME)은 홍길동, 김영호, 김수진), CATEGORY에 따라 '1' → 인문/경제, '2' → 소설, '3' → 생활/기술로 그룹화된다는 것을 확인할 수 있었습니다. 이를 집계함수 SUM()을 이용하여 매출액(PRICE*SALES)을 출력해 주면 정답을 구할 수 있었습니다.
profile
공부 쫌 해!!!😂

0개의 댓글