코딩테스트/SQL

[MySQL] 카테고리 별 도서 판매량 집계하기

rlatotquf45 2024. 10. 25. 10:53
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/144855

문제 요약

BOOK 테이블과 BOOK_SALES 테이블을 활용하여 2022년 1월에 판매된 도서의 카테고리별 총 판매량을 구하는 문제입니다. 결과는 카테고리명을 기준으로 오름차순으로 정렬해야 합니다.

풀이 방법

 

  • JOIN: BOOK 테이블과 BOOK_SALES 테이블은 BOOK_ID를 기준으로 연결됩니다. 따라서 BOOK_ID를 이용하여 두 테이블을 INNER JOIN합니다.
  • 날짜 필터링: BOOK_SALES 테이블에서 2022년 1월에 해당하는 판매량만을 필터링해야 합니다. 즉, SALES_DATE가 2022년 1월에 해당하는 데이터만 선택합니다.
  • 카테고리별 판매량 합산: BOOK 테이블의 CATEGORY를 기준으로 판매량을 SUM하여 카테고리별로 판매량을 집계합니다.
  • 결과 정렬: 최종 결과는 카테고리명을 기준으로 오름차순 정렬합니다.

 

정답 코드

-- 코드를 입력하세요
SELECT category, sum(sales) as total_sales
from book join (select book_id, sales from book_sales where sales_date like "%2022-01%") as book_sales on book.book_id = book_sales.book_id
group by category
order by category asc

새롭게 배운 내용

  • 서브쿼리:
    • 서브쿼리 부분에서 BOOK 테이블과 BOOK_SALES 테이블을 조인한 후, 2022년 1월의 데이터를 필터링합니다.
    • 이 서브쿼리는 각 도서의 카테고리와 판매량을 반환합니다.
    • SELECT B.CATEGORY, S.SALES는 서브쿼리에서 각 도서의 카테고리와 판매량을 선택합니다.
    서브쿼리의 특징:
    1. 독립적 실행 가능: 서브쿼리는 독립적으로 실행될 수 있고, 그 결과를 메인 쿼리에서 사용할 수 있습니다.
    2. 다양한 위치에서 사용 가능: SELECT, FROM, WHERE, HAVING 절 등에 사용될 수 있습니다.
    3. 중첩된 쿼리: 서브쿼리는 다른 쿼리 내부에 중첩되어 사용되므로 복잡한 질의나 조건을 처리할 때 유용합니다.
    서브쿼리에는 크게 두 가지 유형이 있습니다:
    1. 스칼라 서브쿼리: 하나의 값을 반환하는 서브쿼리. 주로 WHERE 또는 SELECT 절에 사용됩니다.
    2. 테이블 서브쿼리: 여러 행이나 컬럼을 반환하는 서브쿼리. 주로 FROM 절에 사용됩니다.
728x90

 

728x90
반응형