|
| 1 | +# [level 4] 년, 월, 성별 별 상품 구매 회원 수 구하기 - 131532 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/131532) |
| 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 | +2026년 02월 02일 17:00:56 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 <code>USER_INFO</code> 테이블과 온라인 상품 판매 정보를 담은 <code>ONLINE_SALE</code> 테이블 입니다.<code>USER_INFO</code> 테이블은 아래와 같은 구조로 되어있으며 <code>USER_ID</code>, <code>GENDER</code>, <code>AGE</code>, <code>JOINED</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>USER_ID</td> |
| 33 | +<td>INTEGER</td> |
| 34 | +<td>FALSE</td> |
| 35 | +</tr> |
| 36 | +<tr> |
| 37 | +<td>GENDER</td> |
| 38 | +<td>TINYINT(1)</td> |
| 39 | +<td>TRUE</td> |
| 40 | +</tr> |
| 41 | +<tr> |
| 42 | +<td>AGE</td> |
| 43 | +<td>INTEGER</td> |
| 44 | +<td>TRUE</td> |
| 45 | +</tr> |
| 46 | +<tr> |
| 47 | +<td>JOINED</td> |
| 48 | +<td>DATE</td> |
| 49 | +<td>FALSE</td> |
| 50 | +</tr> |
| 51 | +</tbody> |
| 52 | + </table> |
| 53 | +<p><code>GENDER</code> 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.</p> |
| 54 | + |
| 55 | +<p><code>ONLINE_SALE</code> 테이블은 아래와 같은 구조로 되어있으며, <code>ONLINE_SALE_ID</code>, <code>USER_ID</code>, <code>PRODUCT_ID</code>, <code>SALES_AMOUNT</code>, <code>SALES_DATE</code>는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.</p> |
| 56 | +<table class="table"> |
| 57 | + <thead><tr> |
| 58 | +<th>Column name</th> |
| 59 | +<th>Type</th> |
| 60 | +<th>Nullable</th> |
| 61 | +</tr> |
| 62 | +</thead> |
| 63 | + <tbody><tr> |
| 64 | +<td>ONLINE_SALE_ID</td> |
| 65 | +<td>INTEGER</td> |
| 66 | +<td>FALSE</td> |
| 67 | +</tr> |
| 68 | +<tr> |
| 69 | +<td>USER_ID</td> |
| 70 | +<td>INTEGER</td> |
| 71 | +<td>FALSE</td> |
| 72 | +</tr> |
| 73 | +<tr> |
| 74 | +<td>PRODUCT_ID</td> |
| 75 | +<td>INTEGER</td> |
| 76 | +<td>FALSE</td> |
| 77 | +</tr> |
| 78 | +<tr> |
| 79 | +<td>SALES_AMOUNT</td> |
| 80 | +<td>INTEGER</td> |
| 81 | +<td>FALSE</td> |
| 82 | +</tr> |
| 83 | +<tr> |
| 84 | +<td>SALES_DATE</td> |
| 85 | +<td>DATE</td> |
| 86 | +<td>FALSE</td> |
| 87 | +</tr> |
| 88 | +</tbody> |
| 89 | + </table> |
| 90 | +<p>동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.</p> |
| 91 | + |
| 92 | +<hr> |
| 93 | + |
| 94 | +<h5>문제</h5> |
| 95 | + |
| 96 | +<p><code>USER_INFO</code> 테이블과 <code>ONLINE_SALE</code> 테이블에서 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요.</p> |
| 97 | + |
| 98 | +<hr> |
| 99 | + |
| 100 | +<h5>예시</h5> |
| 101 | + |
| 102 | +<p>예를 들어 <code>USER_INFO</code> 테이블이 다음과 같고</p> |
| 103 | +<table class="table"> |
| 104 | + <thead><tr> |
| 105 | +<th>USER_ID</th> |
| 106 | +<th>GENDER</th> |
| 107 | +<th>AGE</th> |
| 108 | +<th>JOINED</th> |
| 109 | +</tr> |
| 110 | +</thead> |
| 111 | + <tbody><tr> |
| 112 | +<td>1</td> |
| 113 | +<td>1</td> |
| 114 | +<td>26</td> |
| 115 | +<td>2021-06-01</td> |
| 116 | +</tr> |
| 117 | +<tr> |
| 118 | +<td>2</td> |
| 119 | +<td>NULL</td> |
| 120 | +<td>NULL</td> |
| 121 | +<td>2021-06-25</td> |
| 122 | +</tr> |
| 123 | +<tr> |
| 124 | +<td>3</td> |
| 125 | +<td>0</td> |
| 126 | +<td>NULL</td> |
| 127 | +<td>2021-06-30</td> |
| 128 | +</tr> |
| 129 | +<tr> |
| 130 | +<td>4</td> |
| 131 | +<td>0</td> |
| 132 | +<td>31</td> |
| 133 | +<td>2021-07-03</td> |
| 134 | +</tr> |
| 135 | +<tr> |
| 136 | +<td>5</td> |
| 137 | +<td>1</td> |
| 138 | +<td>25</td> |
| 139 | +<td>2021-07-09</td> |
| 140 | +</tr> |
| 141 | +<tr> |
| 142 | +<td>6</td> |
| 143 | +<td>1</td> |
| 144 | +<td>33</td> |
| 145 | +<td>2021-07-14</td> |
| 146 | +</tr> |
| 147 | +</tbody> |
| 148 | + </table> |
| 149 | +<p><code>ONLINE_SALE</code> 테이블이 다음과 같다면</p> |
| 150 | +<table class="table"> |
| 151 | + <thead><tr> |
| 152 | +<th>ONLINE_SALE_ID</th> |
| 153 | +<th>USER_ID</th> |
| 154 | +<th>PRODUCT_ID</th> |
| 155 | +<th>SALES_AMOUNT</th> |
| 156 | +<th>SALES_DATE</th> |
| 157 | +</tr> |
| 158 | +</thead> |
| 159 | + <tbody><tr> |
| 160 | +<td>1</td> |
| 161 | +<td>1</td> |
| 162 | +<td>54</td> |
| 163 | +<td>1</td> |
| 164 | +<td>2022-01-01</td> |
| 165 | +</tr> |
| 166 | +<tr> |
| 167 | +<td>2</td> |
| 168 | +<td>1</td> |
| 169 | +<td>3</td> |
| 170 | +<td>2</td> |
| 171 | +<td>2022-01-25</td> |
| 172 | +</tr> |
| 173 | +<tr> |
| 174 | +<td>3</td> |
| 175 | +<td>4</td> |
| 176 | +<td>34</td> |
| 177 | +<td>1</td> |
| 178 | +<td>2022-01-30</td> |
| 179 | +</tr> |
| 180 | +<tr> |
| 181 | +<td>4</td> |
| 182 | +<td>6</td> |
| 183 | +<td>253</td> |
| 184 | +<td>3</td> |
| 185 | +<td>2022-02-03</td> |
| 186 | +</tr> |
| 187 | +<tr> |
| 188 | +<td>5</td> |
| 189 | +<td>2</td> |
| 190 | +<td>31</td> |
| 191 | +<td>2</td> |
| 192 | +<td>2022-02-09</td> |
| 193 | +</tr> |
| 194 | +<tr> |
| 195 | +<td>6</td> |
| 196 | +<td>5</td> |
| 197 | +<td>35</td> |
| 198 | +<td>1</td> |
| 199 | +<td>2022-02-14</td> |
| 200 | +</tr> |
| 201 | +<tr> |
| 202 | +<td>7</td> |
| 203 | +<td>5</td> |
| 204 | +<td>57</td> |
| 205 | +<td>1</td> |
| 206 | +<td>2022-02-18</td> |
| 207 | +</tr> |
| 208 | +</tbody> |
| 209 | + </table> |
| 210 | +<p>2022년 1월에 상품을 구매한 회원은 <code>USER_ID</code> 가 1(<code>GENDER</code>=1), 4(<code>GENDER</code>=0)인 회원들이고,<br> |
| 211 | +2022년 2월에 상품을 구매한 회원은 <code>USER_ID</code> 가 2(<code>GENDER</code>=NULL), 5(<code>GENDER</code>=1), 6(<code>GENDER</code>=1)인 회원들 이므로,</p> |
| 212 | + |
| 213 | +<p>년, 월, 성별 별로 상품을 구매한 회원수를 집계하고, 년, 월, 성별을 기준으로 오름차순 정렬하면 다음과 같은 결과가 나와야 합니다.</p> |
| 214 | +<table class="table"> |
| 215 | + <thead><tr> |
| 216 | +<th>YEAR</th> |
| 217 | +<th>MONTH</th> |
| 218 | +<th>GENDER</th> |
| 219 | +<th>USERS</th> |
| 220 | +</tr> |
| 221 | +</thead> |
| 222 | + <tbody><tr> |
| 223 | +<td>2022</td> |
| 224 | +<td>1</td> |
| 225 | +<td>0</td> |
| 226 | +<td>1</td> |
| 227 | +</tr> |
| 228 | +<tr> |
| 229 | +<td>2022</td> |
| 230 | +<td>1</td> |
| 231 | +<td>1</td> |
| 232 | +<td>1</td> |
| 233 | +</tr> |
| 234 | +<tr> |
| 235 | +<td>2022</td> |
| 236 | +<td>2</td> |
| 237 | +<td>1</td> |
| 238 | +<td>2</td> |
| 239 | +</tr> |
| 240 | +</tbody> |
| 241 | + </table> |
| 242 | + |
| 243 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments