header-img
Info :
๋ฐ€๋„
denseยน
์žฅ๋ž˜ํฌ๋ง : ๋‹จ์œ„ ๋ถ€ํ”ผ ๋‹น ์งˆ๋Ÿ‰์ด ๋ณด๋‹ค ๋นฝ๋นฝํ•œ ์‚ฌ๋žŒ ๋˜๊ธฐ

<๋ฌธ์ œ>

<์›๋ณธ ๋ฌธ์ œ: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ€๊ฒฉ๋Œ€๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ>

 

์–ด๋–ค ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด ์‡ผํ•‘๋ชฐ์€ ๋งŒ ์› ๋Œ€๋ถ€ํ„ฐ ํŒ”๋งŒ ์› ๋Œ€๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๊ฐ€๊ฒฉ๋Œ€์˜ ์ƒํ’ˆ์„ ์ทจ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค. ์–ด๋А ๋‚  ํ”„๋กœ๋•ํŠธ ํŒ€์—์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค. ์ œํ’ˆ์„ ๊ฐ€๊ฒฉ๋Œ€๋ณ„๋กœ ํ”„๋กœ๋ชจ์…˜ ์ง„ํ–‰ํ•˜๋ ค ํ•˜๋‹ˆ ๋งŒ ์› ๋‹จ์œ„๋กœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ  ๋‹ฌ๋ผ๊ณ . ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์งœ์•ผ ํ• ๊นŒ? ์ œํ’ˆ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” 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