<๋ฌธ์ >
<์๋ณธ ๋ฌธ์ : ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ๊ฒฉ๋๋ณ ์ํ ๊ฐ์ ๊ตฌํ๊ธฐ>
์ด๋ค ์จ๋ผ์ธ ์ผํ๋ชฐ์ด ์๋ค๊ณ ํ์. ์ด ์ผํ๋ชฐ์ ๋ง ์ ๋๋ถํฐ ํ๋ง ์ ๋๊น์ง ๋ค์ํ ๊ฐ๊ฒฉ๋์ ์ํ์ ์ทจ๊ธํ๊ณ ์๋ค. ์ด๋ ๋ ํ๋ก๋ํธ ํ์์ ๋ฐ์ดํฐ ์ถ์ถ ์์ฒญ์ด ๋ค์ด์๋ค. ์ ํ์ ๊ฐ๊ฒฉ๋๋ณ๋ก ํ๋ก๋ชจ์ ์งํํ๋ ค ํ๋ ๋ง ์ ๋จ์๋ก ๊ทธ๋ฃน์ ๋๋ ๋ฌ๋ผ๊ณ . ์ด๋ฐ ์ํฉ์์๋ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ง์ผ ํ ๊น? ์ ํ ์ ๋ณด๊ฐ ๋ค์ด ์๋ 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 |