Skip to content

Commit 82c6b2b

Browse files
committed
[level 2] Title: 상품 별 오프라인 매출 구하기, Time: 0.00 ms, Memory: 0.0 MB -BaekjoonHub
1 parent b8ceb76 commit 82c6b2b

2 files changed

Lines changed: 209 additions & 0 deletions

File tree

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# [level 2] 상품 별 오프라인 매출 구하기 - 131533
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/131533#qna)
4+
5+
### 성능 요약
6+
7+
메모리: 0.0 MB, 시간: 0.00 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > JOIN
12+
13+
### 채점결과
14+
15+
Empty
16+
17+
### 제출 일자
18+
19+
2025년 07월 05일 20:48:59
20+
21+
### 문제 설명
22+
23+
<p>다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 상품 정보를 담은 <code>PRODUCT</code> 테이블과 오프라인 상품 판매 정보를 담은 <code>OFFLINE_SALE</code> 테이블 입니다. <code>PRODUCT</code> 테이블은 아래와 같은 구조로 <code>PRODUCT_ID</code>, <code>PRODUCT_CODE</code>, <code>PRICE</code>는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.</p>
24+
<table class="table">
25+
<thead><tr>
26+
<th>Column name</th>
27+
<th>Type</th>
28+
<th>Nullable</th>
29+
</tr>
30+
</thead>
31+
<tbody><tr>
32+
<td>PRODUCT_ID</td>
33+
<td>INTEGER</td>
34+
<td>FALSE</td>
35+
</tr>
36+
<tr>
37+
<td>PRODUCT_CODE</td>
38+
<td>VARCHAR(8)</td>
39+
<td>FALSE</td>
40+
</tr>
41+
<tr>
42+
<td>PRICE</td>
43+
<td>INTEGER</td>
44+
<td>FALSE</td>
45+
</tr>
46+
</tbody>
47+
</table>
48+
<p>상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.</p>
49+
50+
<p><code>OFFLINE_SALE</code> 테이블은 아래와 같은 구조로 되어있으며 <code>OFFLINE_SALE_ID</code>, <code>PRODUCT_ID</code>, <code>SALES_AMOUNT</code>, <code>SALES_DATE</code>는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.</p>
51+
<table class="table">
52+
<thead><tr>
53+
<th>Column name</th>
54+
<th>Type</th>
55+
<th>Nullable</th>
56+
</tr>
57+
</thead>
58+
<tbody><tr>
59+
<td>OFFLINE_SALE_ID</td>
60+
<td>INTEGER</td>
61+
<td>FALSE</td>
62+
</tr>
63+
<tr>
64+
<td>PRODUCT_ID</td>
65+
<td>INTEGER</td>
66+
<td>FALSE</td>
67+
</tr>
68+
<tr>
69+
<td>SALES_AMOUNT</td>
70+
<td>INTEGER</td>
71+
<td>FALSE</td>
72+
</tr>
73+
<tr>
74+
<td>SALES_DATE</td>
75+
<td>DATE</td>
76+
<td>FALSE</td>
77+
</tr>
78+
</tbody>
79+
</table>
80+
<p>동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.</p>
81+
82+
<hr>
83+
84+
<h5>문제</h5>
85+
86+
<p><code>PRODUCT</code> 테이블과 <code>OFFLINE_SALE</code> 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.</p>
87+
88+
<hr>
89+
90+
<h5>예시</h5>
91+
92+
<p>예를 들어 <code>PRODUCT</code> 테이블이 다음과 같고 </p>
93+
<table class="table">
94+
<thead><tr>
95+
<th>PRODUCT_ID</th>
96+
<th>PRODUCT_CODE</th>
97+
<th>PRICE</th>
98+
</tr>
99+
</thead>
100+
<tbody><tr>
101+
<td>1</td>
102+
<td>A1000011</td>
103+
<td>15000</td>
104+
</tr>
105+
<tr>
106+
<td>2</td>
107+
<td>A1000045</td>
108+
<td>8000</td>
109+
</tr>
110+
<tr>
111+
<td>3</td>
112+
<td>C3000002</td>
113+
<td>42000</td>
114+
</tr>
115+
</tbody>
116+
</table>
117+
<p><code>OFFLINE_SALE</code> 테이블이 다음과 같다면</p>
118+
<table class="table">
119+
<thead><tr>
120+
<th>OFFLINE_SALE_ID</th>
121+
<th>PRODUCT_ID</th>
122+
<th>SALES_AMOUNT</th>
123+
<th>SALES_DATE</th>
124+
</tr>
125+
</thead>
126+
<tbody><tr>
127+
<td>1</td>
128+
<td>1</td>
129+
<td>2</td>
130+
<td>2022-02-21</td>
131+
</tr>
132+
<tr>
133+
<td>2</td>
134+
<td>1</td>
135+
<td>2</td>
136+
<td>2022-03-02</td>
137+
</tr>
138+
<tr>
139+
<td>3</td>
140+
<td>3</td>
141+
<td>3</td>
142+
<td>2022-05-01</td>
143+
</tr>
144+
<tr>
145+
<td>4</td>
146+
<td>2</td>
147+
<td>1</td>
148+
<td>2022-05-24</td>
149+
</tr>
150+
<tr>
151+
<td>5</td>
152+
<td>1</td>
153+
<td>2</td>
154+
<td>2022-07-14</td>
155+
</tr>
156+
<tr>
157+
<td>6</td>
158+
<td>2</td>
159+
<td>1</td>
160+
<td>2022-09-22</td>
161+
</tr>
162+
</tbody>
163+
</table>
164+
<p>각 상품 별 총 판매량과 판매가는 다음과 같습니다.</p>
165+
166+
<ul>
167+
<li><code>PRODUCT_CODE</code> 가 <code>A1000011</code>인 상품은 총 판매량이 6개, 판매가가 15,000원</li>
168+
<li><code>PRODUCT_CODE</code> 가 <code>A1000045</code>인 상품은 총 판매량이 2개, 판매가가 8,000원</li>
169+
<li><code>PRODUCT_CODE</code> 가 <code>C3000002</code>인 상품은 총 판매량이 3개, 판매가가 42,000원</li>
170+
</ul>
171+
172+
<p>그러므로 각 상품 별 매출액을 계산하고 정렬하면 결과가 다음과 같이 나와야 합니다.</p>
173+
<table class="table">
174+
<thead><tr>
175+
<th>PRODUCT_CODE</th>
176+
<th>SALES</th>
177+
</tr>
178+
</thead>
179+
<tbody><tr>
180+
<td>C3000002</td>
181+
<td>126000</td>
182+
</tr>
183+
<tr>
184+
<td>A1000011</td>
185+
<td>90000</td>
186+
</tr>
187+
<tr>
188+
<td>A1000045</td>
189+
<td>16000</td>
190+
</tr>
191+
</tbody>
192+
</table>
193+
194+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- 코드를 입력하세요
2+
SELECT p.product_code, sum(o.sales_amount * p.price) as sales
3+
from product as p
4+
join offline_sale as o
5+
on o.product_id = p.product_id
6+
group by o.product_id
7+
order by sales desc, p.product_code asc;
8+
9+
# SELECT
10+
# p.product_code
11+
# , SUM(p.price*o.sales_amount) AS sales
12+
# FROM product p
13+
# INNER JOIN offline_sale o ON p.product_id = o.product_id
14+
# GROUP BY p.product_code
15+
# ORDER BY sales DESC, p.product_code ASC;

0 commit comments

Comments
 (0)