<๋ฌธ์ >
<์๋ณธ ๋ฌธ์ : ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ๊ฒฉ๋๋ณ ์ํ ๊ฐ์ ๊ตฌํ๊ธฐ>
์ด๋ค ์จ๋ผ์ธ ์ผํ๋ชฐ์ด ์๋ค๊ณ ํ์. ์ด ์ผํ๋ชฐ์ ๋ง ์ ๋๋ถํฐ ํ๋ง ์ ๋๊น์ง ๋ค์ํ ๊ฐ๊ฒฉ๋์ ์ํ์ ์ทจ๊ธํ๊ณ ์๋ค. ์ด๋ ๋ ํ๋ก๋ํธ ํ์์ ๋ฐ์ดํฐ ์ถ์ถ ์์ฒญ์ด ๋ค์ด์๋ค. ์ ํ์ ๊ฐ๊ฒฉ๋๋ณ๋ก ํ๋ก๋ชจ์ ์งํํ๋ ค ํ๋ ๋ง ์ ๋จ์๋ก ๊ทธ๋ฃน์ ๋๋ ๋ฌ๋ผ๊ณ . ์ด๋ฐ ์ํฉ์์๋ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ง์ผ ํ ๊น? ์ ํ ์ ๋ณด๊ฐ ๋ค์ด ์๋ product ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ๋ค.
| Column name | Type | Nullable |
| product_id | INTEGER | FALSE |
| product_code | VARCHAR(8) | FALSE |
| price | INTEGER | FALSE |
| product_id | product_code | price |
| 1 | A1000011 | 10000 |
| 2 | A1000045 | 9000 |
| 3 | C3000002 | 22000 |
| 4 | C3000006 | 15000 |
| 5 | C3000010 | 30000 |
| 6 | K1000023 | 17000 |
<ํ์ด>
CASE WHEN์ผ๋ก ์ผ์ผ์ด ์ง์ ํด์ค๋ ๋์ง๋ง, ๊ฐ๊ฒฉ์ด ๋ค์ด๊ฐ ์ปฌ๋ผ์ด ์๋ ์ํฉ์ด๋ฏ๋ก ์กฐ๊ฑด์ ๋ถํฉ๋๋ ๋๋ก ๊ณ์ฐํด์ ๋ต์ ๋ฝ์๋ ๋๋ค. FLOOR์ TRUNCATE๋ก ๊ฐ๊ฐ ์๋์ ๊ฐ์ด ํ ์ ์๋ค.
(1) FLOOR
์๋์ ๊ฐ์ด ๊ฐ๊ฒฉ์ 10000์ผ๋ก ๋๋ ๋ค FLOOR๋ฅผ ์ ์ฉํด ์ฃผ๋ฉด ๊ฐ ๊ฐ๊ฒฉ๋๋ณ๋ก ์ ๋ํฌํ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ธ๋ค.
SELECT FLOOR(price / 10000)*10000 AS price_group
, COUNT(product_id) AS products
FROM product
GROUP BY price_group
ORDER BY price_group
(2)TRUNCATE
์๋์ฒ๋ผ CASE WHEN์ผ๋ก 10,000์ ๋ฏธ๋ง ์ํ์ NULL ๊ฐ์ผ๋ก ๋นผ ๋ฒ๋ฆฐ ๋ค ๋๋จธ์ง๋ฅผ TRUNCATE ํด ์ค๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ฌถ์ธ๋ค.
SELECT CASE
WHEN price < 10000 THEN NULL
ELSE TRUNCATE(price, -4) END AS price_group
, COUNT(product_id) AS products
FROM product
GROUP BY price_group
ORDER BY price_group
๊ฒฐ๊ณผ๊ฐ์ ์๋์ ๊ฐ์ด ๋์จ๋ค.
| price_group | products |
| 10000 | 2 |
| 20000 | 2 |
| 30000 | 3 |
| 40000 | 4 |
| 50000 | 6 |
| 60000 | 7 |
| 70000 | 2 |
| 80000 | 4 |
GROUP BY์ product_code๋ฅผ ๋ฃ์ด ์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๊ทธ๋ฃน๋ณ ์ํ์ฝ๋๋ฅผ ์กฐํํ ์ ์๊ฒ ๋ค.
| price_group | product_code |
| 10000 | A3000001 |
| 10000 | C3000002 |
| 20000 | A2000002 |
| 20000 | C4000002 |
| 30000 | D2000000 |
| ... | ... |
'TOOLS > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| SQL: ์๋์ฐ ํจ์Window Function VS GROUP BY (0) | 2024.02.20 |
|---|---|
| SQL ๋ฌธ์ ํ์ด: ๋ค๋ฅธ ํ ์ด๋ธ ๊ฐ ๊ธฐ์ค์ผ๋ก ๋ฉ์ธ ํ ์ด๋ธ์ ๊ฐ ๋ถ์ฌํ๊ธฐ (0) | 2024.02.19 |
| SQL: ์ NULL์ =์ด ์๋๋ผ is๋ฅผ ์ธ๊น (1) | 2024.02.11 |
| SQL: ์กฐ๊ฑด ์ ์ฉํด ์ ์๋ฏธํ ๊ธฐ์ค์ ๋ฝ๊ธฐ, CASE WHEN (2) | 2024.02.08 |
| SQL: ์ค๋ณต ๊ฐ๋ง ๋ฆฌ์คํ ํ๋ ๋ฐฉ๋ฒ, HAVING COUNT() (0) | 2024.02.06 |