์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

[๋ฌธ์ œํ’€์ด] SQL | CASE WHEN ๊ฐ„๋‹จํžˆ ์“ฐ๋Š” ๋ฐฉ๋ฒ•??

0๏ธโƒฃ 2026. 1. 10. 12:32

CASE WHEN์œผ๋กœ ๋ชจ๋“  ๊ฐ€๊ฒฉ๋Œ€๋ฅผ ๋‚˜๋ˆ„๋ฉด? ํฐ ๊ธˆ์•ก์ด ๋‚˜์˜ฌ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ์„œ

ํšจ์œจ X ๊ฐ€๋…์„ฑ X ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€

select
    case when PRICE < 20000 and PRICE >= 10000 then 10000
         when PRICE < 30000 and PRICE >= 20000 then 20000
         when PRICE < 40000 and PRICE >= 30000 then 30000
         when PRICE < 50000 and PRICE >= 40000 then 40000
         when PRICE < 60000 and PRICE >= 50000 then 50000
         when PRICE < 70000 and PRICE >= 60000 then 60000
         when PRICE < 80000 and PRICE >= 70000 then 70000
         when PRICE < 90000 and PRICE >= 80000 then 80000
         else '0'
         end as PRICE_GROUP
    , count(PRODUCT_ID) as PRODUCTS
from PRODUCT
group by PRICE_GROUP
order by PRICE_GROUP;

 

๊ฐ€๊ฒฉ๋Œ€ ๊ทธ๋ฃนํ•‘ "๊ณต์‹ํ™”" : FLOOR(price / N) * N

SELECT
    FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY FLOOR(PRICE / 10000) * 10000
ORDER BY PRICE_GROUP;

 

<๋‚˜์ด, ์ถœ์ƒ์—ฐ๋„ ๊ตฌ๊ฐ„ ๋‚˜๋ˆ„๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€! ์‘์šฉ ๊ฐ€๋Šฅ>

  • ๋‚˜์ด๋ฅผ 5์‚ด ๋‹จ์œ„๋กœ ๊ทธ๋ฃนํ•‘
SELECT
    FLOOR(age / 5) * 5 AS AGE_GROUP,
    COUNT(*) AS CNT
FROM users
GROUP BY FLOOR(age / 5) * 5
ORDER BY AGE_GROUP;
  • ์ถœ์ƒ์—ฐ๋„๋กœ ๊ทธ๋ฃนํ•‘
FLOOR(birth_year / 10) * 10

 

FLOOR(x) ํ•จ์ˆ˜??

: x๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’. ๐Ÿค”๐Ÿ’ญ ๋ง์ด ์–ด๋ ต์ฌฌ?

์†Œ์†Œ๋Š” ์ˆซ์ž a์™€ a+1 ์‚ฌ์ด์— ์žˆ์œผ๋‹ˆ๊นŒ ๊ทธ ์ค‘ ์ž‘์€ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅ!

3 ----- 3.57 ----- 4  โ–ถ๏ธŽ 3

-6 ----- -5.8 ----- -5  โ–ถ๏ธŽ  -6

๐Ÿ’กRound()๋Š” ์ง€์ •ํ•œ ์†Œ์ˆซ์  ์ž๋ฆฌ๊นŒ์ง€๋งŒ '๋ฐ˜์˜ฌ๋ฆผ'ํ•ด์„œ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌ๊ฐ„์˜ '์ตœ์†Ÿ๊ฐ’'์„ ๊ตฌํ•˜๊ธฐ์—” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.