https://school.programmers.co.kr/learn/courses/30/lessons/144856
정답
SELECT A.AUTHOR_ID,B.AUTHOR_NAME,A.CATEGORY,SUM(C.SALES * PRICE) TOTAL_SALES
FROM BOOK A
INNER JOIN AUTHOR B
ON A.AUTHOR_ID = B.AUTHOR_ID
INNER JOIN BOOK_SALES C
ON A.BOOK_ID = C.BOOK_ID
WHERE TO_CHAR(C.SALES_DATE,'YYYY') ='2022'
AND TO_CHAR(C.SALES_DATE,'MM') ='01'
GROUP BY A.AUTHOR_ID,A.CATEGORY,B.AUTHOR_NAME
ORDER BY A.AUTHOR_ID,CATEGORY DESC
;
풀이
Step 1) 2022년 1월 where 절 조건 걸기
- 3개 테이블 INNER JOIN
- WHERE TO_CHAR(C.SALES_DATE,'YYYY') ='2022'
AND TO_CHAR(C.SALES_DATE,'MM') ='01'
⇒ 2022년 1월
SELECT *
FROM BOOK A
INNER JOIN AUTHOR B
ON A.AUTHOR_ID = B.AUTHOR_ID
INNER JOIN BOOK_SALES C
ON A.BOOK_ID = C.BOOK_ID
WHERE TO_CHAR(C.SALES_DATE,'YYYY') ='2022'
AND TO_CHAR(C.SALES_DATE,'MM') ='01'
;
Step 2) Group by
- SELECT 절에 컬럼명 중복 되지 않으면 컬럼명만 작성 가능하다(테이블 생략)
SELECT A.AUTHOR_ID,AUTHOR_NAME,CATEGORY,SUM(C.SALES * PRICE) TOTAL_SALES
FROM BOOK A
INNER JOIN AUTHOR B
ON A.AUTHOR_ID = B.AUTHOR_ID
INNER JOIN BOOK_SALES C
ON A.BOOK_ID = C.BOOK_ID
WHERE TO_CHAR(C.SALES_DATE,'YYYY') ='2022'
AND TO_CHAR(C.SALES_DATE,'MM') ='01'
GROUP BY A.AUTHOR_ID,A.CATEGORY,B.AUTHOR_NAME
ORDER BY A.AUTHOR_ID,CATEGORY DESC
;
'DB > 프로그래머스' 카테고리의 다른 글
[Oracle] 취소되지 않은 진료 예약 조회하기 (0) | 2024.10.02 |
---|---|
[Oracle] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.09.28 |
[Oracle] 오랜 기간 보호한 동물(2) (0) | 2024.09.23 |
[Oracle] 즐겨찾기가 가장 많은 식당 정보 출력하기 (1) | 2024.09.23 |
[Oracle] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.09.23 |