Skip to content

Commit f3b4f16

Browse files
committed
[level 4] Title: 저자 별 카테고리 별 매출액 집계하기, Time: 0.00 ms, Memory: 0.0 MB -BaekjoonHub
1 parent 1d7d265 commit f3b4f16

File tree

2 files changed

+294
-0
lines changed

2 files changed

+294
-0
lines changed
Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
# [level 4] 저자 별 카테고리 별 매출액 집계하기 - 144856
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/144856)
4+
5+
### 성능 요약
6+
7+
메모리: 0.0 MB, 시간: 0.00 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > GROUP BY
12+
13+
### 채점결과
14+
15+
Empty
16+
17+
### 제출 일자
18+
19+
2025년 11월 10일 10:39:17
20+
21+
### 문제 설명
22+
23+
<p>다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(<code>BOOK</code>), 저자 정보(<code>AUTHOR</code>) 테이블입니다.</p>
24+
25+
<p><code>BOOK</code> 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.</p>
26+
<table class="table">
27+
<thead><tr>
28+
<th>Column name</th>
29+
<th>Type</th>
30+
<th>Nullable</th>
31+
<th>Description</th>
32+
</tr>
33+
</thead>
34+
<tbody><tr>
35+
<td>BOOK_ID</td>
36+
<td>INTEGER</td>
37+
<td>FALSE</td>
38+
<td>도서 ID</td>
39+
</tr>
40+
<tr>
41+
<td>CATEGORY</td>
42+
<td>VARCHAR(N)</td>
43+
<td>FALSE</td>
44+
<td>카테고리 (경제, 인문, 소설, 생활, 기술)</td>
45+
</tr>
46+
<tr>
47+
<td>AUTHOR_ID</td>
48+
<td>INTEGER</td>
49+
<td>FALSE</td>
50+
<td>저자 ID</td>
51+
</tr>
52+
<tr>
53+
<td>PRICE</td>
54+
<td>INTEGER</td>
55+
<td>FALSE</td>
56+
<td>판매가 (원)</td>
57+
</tr>
58+
<tr>
59+
<td>PUBLISHED_DATE</td>
60+
<td>DATE</td>
61+
<td>FALSE</td>
62+
<td>출판일</td>
63+
</tr>
64+
</tbody>
65+
</table>
66+
<p><code>AUTHOR</code> 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.</p>
67+
<table class="table">
68+
<thead><tr>
69+
<th>Column name</th>
70+
<th>Type</th>
71+
<th>Nullable</th>
72+
<th>Description</th>
73+
</tr>
74+
</thead>
75+
<tbody><tr>
76+
<td>AUTHOR_ID</td>
77+
<td>INTEGER</td>
78+
<td>FALSE</td>
79+
<td>저자 ID</td>
80+
</tr>
81+
<tr>
82+
<td>AUTHOR_NAME</td>
83+
<td>VARCHAR(N)</td>
84+
<td>FALSE</td>
85+
<td>저자명</td>
86+
</tr>
87+
</tbody>
88+
</table>
89+
<p><code>BOOK_SALES</code> 테이블은 각 도서의 날짜 별 판매량 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.</p>
90+
<table class="table">
91+
<thead><tr>
92+
<th>Column name</th>
93+
<th>Type</th>
94+
<th>Nullable</th>
95+
<th>Description</th>
96+
</tr>
97+
</thead>
98+
<tbody><tr>
99+
<td>BOOK_ID</td>
100+
<td>INTEGER</td>
101+
<td>FALSE</td>
102+
<td>도서 ID</td>
103+
</tr>
104+
<tr>
105+
<td>SALES_DATE</td>
106+
<td>DATE</td>
107+
<td>FALSE</td>
108+
<td>판매일</td>
109+
</tr>
110+
<tr>
111+
<td>SALES</td>
112+
<td>INTEGER</td>
113+
<td>FALSE</td>
114+
<td>판매량</td>
115+
</tr>
116+
</tbody>
117+
</table>
118+
<hr>
119+
120+
<h5>문제</h5>
121+
122+
<p><code>2022년 1월</code>의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(<code>TOTAL_SALES = 판매량 * 판매가</code>) 을 구하여, 저자 ID(<code>AUTHOR_ID</code>), 저자명(<code>AUTHOR_NAME</code>), 카테고리(<code>CATEGORY</code>), 매출액(<code>SALES</code>) 리스트를 출력하는 SQL문을 작성해주세요. <br>
123+
결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요.</p>
124+
125+
<hr>
126+
127+
<h5>예시</h5>
128+
129+
<p>예를 들어 <code>BOOK</code> 테이블과 <code>AUTHOR</code> 테이블, <code>BOOK_SALES</code> 테이블이 다음과 같다면</p>
130+
<table class="table">
131+
<thead><tr>
132+
<th>BOOK_ID</th>
133+
<th>CATEGORY</th>
134+
<th>AUTHOR_ID</th>
135+
<th>PRICE</th>
136+
<th>PUBLISHED_DATE</th>
137+
</tr>
138+
</thead>
139+
<tbody><tr>
140+
<td>1</td>
141+
<td>인문</td>
142+
<td>1</td>
143+
<td>10000</td>
144+
<td>2020-01-01</td>
145+
</tr>
146+
<tr>
147+
<td>2</td>
148+
<td>경제</td>
149+
<td>1</td>
150+
<td>9000</td>
151+
<td>2021-02-05</td>
152+
</tr>
153+
<tr>
154+
<td>3</td>
155+
<td>경제</td>
156+
<td>2</td>
157+
<td>9000</td>
158+
<td>2021-03-11</td>
159+
</tr>
160+
</tbody>
161+
</table><table class="table">
162+
<thead><tr>
163+
<th>AUTHOR_ID</th>
164+
<th>AUTHOR_NAME</th>
165+
</tr>
166+
</thead>
167+
<tbody><tr>
168+
<td>1</td>
169+
<td>홍길동</td>
170+
</tr>
171+
<tr>
172+
<td>2</td>
173+
<td>김영호</td>
174+
</tr>
175+
</tbody>
176+
</table><table class="table">
177+
<thead><tr>
178+
<th>BOOK_ID</th>
179+
<th>SALES_DATE</th>
180+
<th>SALES</th>
181+
</tr>
182+
</thead>
183+
<tbody><tr>
184+
<td>1</td>
185+
<td>2022-01-01</td>
186+
<td>2</td>
187+
</tr>
188+
<tr>
189+
<td>2</td>
190+
<td>2022-01-02</td>
191+
<td>3</td>
192+
</tr>
193+
<tr>
194+
<td>1</td>
195+
<td>2022-01-05</td>
196+
<td>1</td>
197+
</tr>
198+
<tr>
199+
<td>2</td>
200+
<td>2022-01-20</td>
201+
<td>5</td>
202+
</tr>
203+
<tr>
204+
<td>2</td>
205+
<td>2022-01-21</td>
206+
<td>6</td>
207+
</tr>
208+
<tr>
209+
<td>3</td>
210+
<td>2022-01-22</td>
211+
<td>2</td>
212+
</tr>
213+
<tr>
214+
<td>2</td>
215+
<td>2022-02-11</td>
216+
<td>3</td>
217+
</tr>
218+
</tbody>
219+
</table>
220+
<p>2022년 1월의 도서 별 총 매출액은 도서 ID 가 1 인 도서가 총 3권 * 10,000원 = 30,000원, 도서 ID 가 2 인 도서가 총 14권 * 9,000 = 126,000원 이고, 도서 ID 가 3 인 도서가 총 2권 * 9,000 = 18,000원 입니다.</p>
221+
222+
<p>저자 별 카테고리 별로 매출액을 집계하면 결과는 다음과 같습니다.</p>
223+
<table class="table">
224+
<thead><tr>
225+
<th>AUTHOR_ID</th>
226+
<th>AUTHOR_NAME</th>
227+
<th>CATEGORY</th>
228+
<th>TOTAL_SALES</th>
229+
</tr>
230+
</thead>
231+
<tbody><tr>
232+
<td>1</td>
233+
<td>홍길동</td>
234+
<td>인문</td>
235+
<td>30000</td>
236+
</tr>
237+
<tr>
238+
<td>1</td>
239+
<td>홍길동</td>
240+
<td>경제</td>
241+
<td>126000</td>
242+
</tr>
243+
<tr>
244+
<td>2</td>
245+
<td>김영호</td>
246+
<td>경제</td>
247+
<td>18000</td>
248+
</tr>
249+
</tbody>
250+
</table>
251+
<p>그리고 저자 ID, 카테고리 순으로 내림차순 정렬하면 다음과 같이 나와야 합니다.</p>
252+
<table class="table">
253+
<thead><tr>
254+
<th>AUTHOR_ID</th>
255+
<th>AUTHOR_NAME</th>
256+
<th>CATEGORY</th>
257+
<th>TOTAL_SALES</th>
258+
</tr>
259+
</thead>
260+
<tbody><tr>
261+
<td>1</td>
262+
<td>홍길동</td>
263+
<td>인문</td>
264+
<td>30000</td>
265+
</tr>
266+
<tr>
267+
<td>1</td>
268+
<td>홍길동</td>
269+
<td>경제</td>
270+
<td>126000</td>
271+
</tr>
272+
<tr>
273+
<td>2</td>
274+
<td>김영호</td>
275+
<td>경제</td>
276+
<td>18000</td>
277+
</tr>
278+
</tbody>
279+
</table>
280+
281+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
select
2+
b.author_id,
3+
a.author_name,
4+
b.category,
5+
sum(b.price * bs.sales) as total_sales
6+
from book as b
7+
join author as a
8+
on b.author_id = a.author_id
9+
join book_sales as bs
10+
on b.book_id = bs.book_id
11+
where bs.sales_date like '2022-01%'
12+
group by b.author_id, a.author_name, b.category
13+
order by b.author_id, b.category desc;

0 commit comments

Comments
 (0)