๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋ฅ ์ผํ๋ชฐ์์ ํ๋งค์ค์ธ ์ํ๋ค์ ์ ๋ณด๋ฅผ ๋ด์ PRODUCT ํ ์ด๋ธ์ ๋๋ค. PRODUCT ํ ์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, PRODUCT_ID, PRODUCT_CODE, PRICE๋ ๊ฐ๊ฐ ์ํ ID, ์ํ์ฝ๋, ํ๋งค๊ฐ๋ฅผ ๋ํ๋ ๋๋ค.
Column name | Type | Nullable |
PRODUCT_ID | INTEGER | FALSE |
PRODUCT_CODE | VARCHAR(8) | FALSE |
PRICE | INTEGER | FALSE |
์ํ ๋ณ๋ก ์ค๋ณต๋์ง ์๋ 8์๋ฆฌ ์ํ์ฝ๋ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ 2์๋ฆฌ๋ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ฌธ์
PRODUCT ํ ์ด๋ธ์์ ์ํ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋(PRODUCT_CODE ์ 2์๋ฆฌ) ๋ณ ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ์ํ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์์
์๋ฅผ ๋ค์ด PRODUCT ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
PRODUCT_ID | PRODUCT_CODE | PRICE |
1 | A1000011 | 10000 |
2 | A1000045 | 9000 |
3 | C3000002 | 22000 |
4 | C3000006 | 15000 |
5 | C3000010 | 30000 |
6 | K1000023 | 17000 |
์ํ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋ ๋ณ ์ํ์ ์๋์ ๊ฐ์ผ๋ฏ๋ก,
- A1: PRODUCT_ID๊ฐ 1, 2 ์ธ ์ํ
- C3: PRODUCT_ID๊ฐ 3, 4, 5 ์ธ ์ํ
- K1: PRODUCT_ID๊ฐ 6 ์ธ ์ํ
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํฉ๋๋ค.
CATEGORY | PRODUCTS |
A1 | 2 |
C3 | 3 |
K1 | 1 |
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
์ํ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋(PRODUCT_CODE ์ 2์๋ฆฌ) ๋ณ ์ํ ๊ฐ์๋ฅผ ์ถ๋ ฅ > ๋ฌธ์์ด ์ถ์ถ → ๋ฌธ์์ด๋ณ GROUP BY
๊ฒฐ๊ณผ๋ ์ํ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด1
MySQL ๋ฌธ์์ด ์ถ์ถ ํจ์
SUBSTRING(๋ฌธ์์ด, ์์์์น, ์ถ์ถ๊ฐฏ์)
LEFT(๋ฌธ์์ด, ์ถ์ถ๊ฐฏ์) : ๋ฌธ์์ด ์ผ์ชฝ๋ถํฐ ์ถ์ถ
RIGHT(๋ฌธ์์ด, ์ถ์ถ๊ฐฏ์) : ๋ฌธ์์ด ์ค๋ฅธ์ชฝ๋ถํฐ ์ถ์ถ
SELECT LEFT(PRODUCT_CODE, 2) CATEGORY,
COUNT(*) PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1;
SUBSTRING(PRODUCT_CODE, 1, 2) ๋ก๋ ๊ฐ๋ฅํ๋ค.