๋์ด๋ 3์ด๋ผ ์ด๋ ค์ธ ์ค ์์๋๋ฐ ๋๋ฌด ์ฌ์์ ๊ทธ๋ฅ ์ฝ๋๋ง ํฌ์คํ ํฉ๋๋ค.
๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 1
์ ๋ต์ฝ๋
SELECT ID, SIZE
FROM (
SELECT ID,
CASE WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH'
WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
ELSE 'MEDIUM'
END AS SIZE
FROM ECOLI_DATA
) AS S
ORDER BY ID;
๋์ฅ๊ท ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ธฐ 2
๋ฌธ์
๋์ฅ๊ท ๊ฐ์ฒด์ ํฌ๊ธฐ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ ๋ ์์ 0% ~ 25% ๋ฅผ 'CRITICAL', 26% ~ 50% ๋ฅผ 'HIGH', 51% ~ 75% ๋ฅผ 'MEDIUM', 76% ~ 100% ๋ฅผ 'LOW' ๋ผ๊ณ ๋ถ๋ฅํฉ๋๋ค. ๋์ฅ๊ท ๊ฐ์ฒด์ ID(ID) ์ ๋ถ๋ฅ๋ ์ด๋ฆ(COLONY_NAME)์ ์ถ๋ ฅํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ฒด์ ID ์ ๋ํด ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์ . ๋จ, ์ด ๋ฐ์ดํฐ์ ์๋ 4์ ๋ฐฐ์์ด๋ฉฐ ๊ฐ์ ์ฌ์ด์ฆ์ ๋์ฅ๊ท ๊ฐ์ฒด๊ฐ ์๋ก ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ถ๋ฅ๋๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
๐ฅณ์ ๋ต์ฝ๋๐ฅณ
์ค๋ ์ด์์ข์๋ ์ธ๊ฐ? >< ํ ์
์๊ฐํ๋๋ก ํ๋ฒ์ ๋ฐ๋ก ์ฑ๊ณต~ใ
ใ
ใ
ใ
์ด๊ฒ ๋๋ค๊ณ ~?
PERCENT_RANK() ํด ์ฃผ๋ฉด ๋๊ฒ ๋ค ์๊ฐํ๋๋ฐ ๋ฐ๋ก์ฑ๊ณต
๋จ์ ๋ฌธ์ ๋ ๋ฒจ๋ค์ด 3,4,5๋ผ์ ๋๋ฌด ์ด๋ ค์ธ๊น๋ด ํ๊ธฐ ์ซ์๋๋ฐ
์ด๋ฐ ๋ ๋ ์๊ตฌ๋ง ><
์คํ๋ ค ์กฐ์
SELECT ID,
CASE
WHEN COLONY_NAME * 100 <= 25 THEN 'CRITICAL'
WHEN COLONY_NAME * 100 <= 50 THEN 'HIGH'
WHEN COLONY_NAME * 100 <= 75 THEN 'MEDIUM'
ELSE 'LOW'
END AS COLONY_NAME
FROM (
SELECT ID,PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) AS COLONY_NAME
FROM ECOLI_DATA
) AS PER
ORDER BY ID;
์ฒ์์๋ ๋จผ์ SIZE_OF_COLONY๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด ์ค ํ ์ด๋ธ์์ SIZE_OF_COLONY ์ปฌ๋ผ์ PERCENT_RANK()๋ฅผ ๊ฑธ์ด ์คฌ๋ค. ์ด๋ ๊ฒ ํด ์ฃผ๋ฉด ํผ์ผํธ๊ฐ ๋์ค๋๋ฐ ๊ฒฐ๊ณผ๊ฐ์ด 0๊ณผ 1์ฌ์ด๋ผ ์ฌ๊ธฐ์ 100์ ๊ณฑํด์ฃผ์ด์ผ ํ๋ค. CASE WHEN ๊ตฌ๋ฌธ์ผ๋ก ๊ตฌ๊ฐ์ ๋๋์ด์ฃผ๊ณ ๊ฐ์ ๋ฐํ