๐Ÿ–ฅ๏ธ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [SQL] ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 2

rtw0202 2026. 2. 24. 14:14

1. ๋ฌธ์ œ ์„ค๋ช…

๋Œ€์žฅ๊ท ๋“ค์€ ์ผ์ • ์ฃผ๊ธฐ๋กœ ๋ถ„ํ™”ํ•˜๋ฉฐ, ๋ถ„ํ™”๋ฅผ ์‹œ์ž‘ํ•œ ๊ฐœ์ฒด๋ฅผ ๋ถ€๋ชจ ๊ฐœ์ฒด, ๋ถ„ํ™”๊ฐ€ ๋˜์–ด ๋‚˜์˜จ ๊ฐœ์ฒด๋ฅผ ์ž์‹ ๊ฐœ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์‹คํ—˜์‹ค์—์„œ ๋ฐฐ์–‘ํ•œ ๋Œ€์žฅ๊ท ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ECOLI_DATA ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ECOLI_DATA ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ID, PARENT_ID, SIZE_OF_COLONYDIFFERENTIATION_DATEGENOTYPE ์€ ๊ฐ๊ฐ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID, ๋ถ€๋ชจ ๊ฐœ์ฒด์˜ ID, ๊ฐœ์ฒด์˜ ํฌ๊ธฐ, ๋ถ„ํ™”๋˜์–ด ๋‚˜์˜จ ๋‚ ์งœ, ๊ฐœ์ฒด์˜ ํ˜•์งˆ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ตœ์ดˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ PARENT_ID ๋Š” NULL ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์ƒ์œ„ 0% ~ 25% ๋ฅผ 'CRITICAL', 26% ~ 50% ๋ฅผ 'HIGH', 51% ~ 75% ๋ฅผ 'MEDIUM', 76% ~ 100% ๋ฅผ 'LOW' ๋ผ๊ณ  ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID(ID) ์™€ ๋ถ„๋ฅ˜๋œ ์ด๋ฆ„(COLONY_NAME)์„ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ฐœ์ฒด์˜ ID ์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š” . ๋‹จ, ์ด ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋Š” 4์˜ ๋ฐฐ์ˆ˜์ด๋ฉฐ ๊ฐ™์€ ์‚ฌ์ด์ฆˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.


2. ์ถœ๋ ฅ ์˜ˆ์‹œ

 
3. ๋ฌธ์ œ ๋‹ต์•ˆ

SELECT
    t.id,
    CASE
        WHEN t.size_of_colony = 1 THEN 'CRITICAL'
        WHEN t.size_of_colony = 2 THEN 'HIGH'
        WHEN t.size_of_colony = 3 THEN 'MEDIUM'
        ELSE 'LOW'
        END AS colony_name
FROM (SELECT
        id,
        NTILE(4) OVER (ORDER BY size_of_colony DESC) AS size_of_colony
      FROM ecoli_data
      ) t
ORDER BY t.id ASC;