https://school.programmers.co.kr/learn/courses/30/lessons/144855
1. 서론
MySQL이... Oracle보다 좋다라는 것을 깨닫게 해준 문제^^
2. 문제 풀이
BOOK : 각 도서의 정보를 담은 테이블
테이블 구조:
BOOK_ID: 도서 ID
CATEGORY: 카테고리 (경제, 인문, 소설, 생활, 기술)
AUTHOR_ID: 저자 ID
PRICE: 판매가 (원)
PUBLISHED_DATE: 출판일
BOOK_SALES : 각 도서의 날짜 별 판매량 정보를 담은 테이블
테이블 구조:
BOOK_ID: 도서 ID
SALES_DATE: 판매일
SALES: 판매량
Q. 2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.
결과는 카테고리명을 기준으로 오름차순 정렬해주세요.
'2022년 1월', '카테고리 별', '합산된 판매량'을 구하는 것이 포인트이다.
날짜부분에서 Oracle과 MySQL의 문법 차이가 발생한다.
MySQL은 그냥 date에서 like를 쓰면 조건이 걸려지는데
Oracle은 to_char를 이용해서 date를 잘라서 문자열로 만들어서 검색해야한다. (개불편)
카테고리 별 = group by
합산 = sum(not count)
3. 코드 설명
MySQL ver
select category, sum(sales) as total_sales
from book b, book_sales s
where sales_date like '2022-01%' and b.book_id = s.book_id
group by category
order by category
Oracle ver
select category, sum(sales) as total_sales
from book b, book_sales s
where to_char(sales_date, 'YYYY-MM') = '2022-01' and b.book_id = s.book_id
group by category
order by category
두 테이블의 값을 다 이용해야 하기 때문에 조인을 하고
book_id로 컬럼값들을 이어주고
sales_date에서 2022년 1월인 것 중에 같은 카테고리의 것들만 select하도록 조건을 줬다.
'SQL' 카테고리의 다른 글
[MySQL] 물고기 종류 별 대어 찾기 (0) | 2024.07.11 |
---|---|
[MySQL] 프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.01.17 |
[MySQL] 프로그래머스 카테고리 별 상품 개수 구하기 (0) | 2023.01.13 |
[MySQL] 프로그래머스 가격대 별 상품 개수 구하기 (0) | 2023.01.12 |
[MySQL] 프로그래머스 상품 별 오프라인 매출 구하기 (1) | 2023.01.12 |