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는 서브쿼리에서 각 도서의 카테고리와 판매량을 선택합니다.
- 독립적 실행 가능: 서브쿼리는 독립적으로 실행될 수 있고, 그 결과를 메인 쿼리에서 사용할 수 있습니다.
- 다양한 위치에서 사용 가능: SELECT, FROM, WHERE, HAVING 절 등에 사용될 수 있습니다.
- 중첩된 쿼리: 서브쿼리는 다른 쿼리 내부에 중첩되어 사용되므로 복잡한 질의나 조건을 처리할 때 유용합니다.
- 스칼라 서브쿼리: 하나의 값을 반환하는 서브쿼리. 주로 WHERE 또는 SELECT 절에 사용됩니다.
- 테이블 서브쿼리: 여러 행이나 컬럼을 반환하는 서브쿼리. 주로 FROM 절에 사용됩니다.
728x90
728x90
반응형
'코딩테스트 > SQL' 카테고리의 다른 글
[MySQL] - 오랜 기간 보호한 동물(1) (0) | 2024.10.26 |
---|---|
[MySQL] 조건별로 분류하여 주문상태 출력하기 (0) | 2024.10.26 |
[MySQL] - 있었는데요 없었습니다 (0) | 2024.10.25 |
[MySQL] - 오랜 기간 보호한 동물(2) (2) | 2024.10.18 |
[MySQL] - 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2024.10.18 |