코테/프로그래머스

[프로그래머스/Lv. 4] 저자 별 카테고리 별 매출액 집계하기 (MySQL)

imname1am 2023. 10. 11. 15:54
반응형

🔺 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
SELECT A.AUTHOR_ID
     , A.AUTHOR_NAME
     , B.CATEGORY
     , SUM(S.SALES * B.PRICE) AS TOTAL_SALES
FROM AUTHOR A
JOIN BOOK B       ON A.AUTHOR_ID = B.AUTHOR_ID
JOIN BOOK_SALES S ON B.BOOK_ID   = S.BOOK_ID
WHERE DATE_FORMAT(S.SALES_DATE, '%Y-%m'= '2022-01'
GROUP BY A.AUTHOR_ID, A.AUTHOR_NAME, B.CATEGORY    -- 저자 별, 카테고리 별 매출액
ORDER BY A.AUTHOR_ID ASC, B.CATEGORY DESC;         -- 저자ID 오름차순, 카테고리 내림차순
cs

 

 

🧩 해결 아이디어

• SELECT문

: AUTHOR 테이블에서 AUTHOR_ID, AUTHOR_NAME 값을,

BOOK  테이블에서 CATEGORY 값을,

BOOK 테이블의 PRICE 값과 BOOK_SALES 테이블의 SALES를 활용해 TOTAL_SALES로 이름을 설정해 값을 가져온다.

 

• JOIN문

1) BOOK 테이블에서                AUTHOR 테이블과 AUTHOR_ID가 같은 값을 가져온다.

2) BOOK_SALES 테이블에서 AUTHOR 테이블과 BOOK_ID가 같은 값을 가져온다.

 

• WHERE문

: BOOK_SALES 테이블에서 판매일(SALES_DATE)이 '2022년 1월' 인 객체를 가져온다.

 

• GROUP BY문

: 저자 별, 저자명 별, 카테고리 별로 묶어 출력한다.

 

• ORDER BY

: 문제에서 원하는대로 출력하도록 한다.

 

 


🔺 다른 풀이들

- BOOK B 기준으로 조인하셨고, WHERE절에서 '2022년 1월' 끌어오는 필터링 방법이 조금 다르시다.

YEAR(S.SALES_DATE) = 2002 AND MONTH(S.SALES_DATE) = 1
 

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

문제링크항상 세로 성분인지 가로 성분인지 정확하게 인지하는 것이 중요하다. 연산도 세로인지 가로인지 중요하다. 인지만 잘한다면 크게 어렵지 않은 문제이다.판매정보에 각 고유정보를 JOIN

velog.io

 


💬 느낀 점

JOIN 2개를 어떻게 쓰나 했더니

그냥 AND 쓸 필요도 없이 연달아 쓰면 되는가보다..

 

그리고 BOOK 기준으로 JOIN하는 게 좀 더 옳은 방향 같다.

아무래도 두 테이블과 모두 겹치는 컬럼을 갖고 있는 테이블은 BOOK이다 보니..

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

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

츄르사려고 코딩하는집사입니다. 1. [프로그래머스/SQL] 저자 별 카테고리 별 매출액 집계하기 오라클(Oracle) 2. 문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/144856 프로그래머스 코드 중심

yongku.tistory.com

 

 

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

안녕하세요! 데코입니다! 오늘은 프로그래머스 코딩테스트 연습에 있는 "저자 별 카테고리 별 매출액 집계하기" 문제를 포스팅하려고 합니다! 바로 포스팅 시작할게요! :) (출처 : https://school.progr

kkw-da.tistory.com

 

반응형