|
| 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 |
0 commit comments