알고리즘/SQL

대장균의 크기에 따라 분류하기 2 ***

베리영young 2024. 9. 19. 08:22

일단 이 문제를 풀기 위해 블로그를 찾아보면

새로운 함수가 있다 ㅎㅎㅎㅎㅎㅎㅎㅎ;;;;;

 

WITH A AS (
    SELECT ID, RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) AS R
    FROM ECOLI_DATA 
)


-- 코드를 작성해주세요 -- 않이 모르는 함수가 있네
SELECT ECOLI_DATA.ID,
     CASE
       WHEN 1/4 >= R/(SELECT COUNT(*) FROM ECOLI_DATA) THEN "CRITICAL"
       WHEN 1/2 >= R/(SELECT COUNT(*) FROM ECOLI_DATA) THEN "HIGH"
       WHEN 3/4 >= R/(SELECT COUNT(*) FROM ECOLI_DATA) THEN "MEDIUM"
       ELSE "LOW"
     END COLONY_NAME
FROM ECOLI_DATA INNER JOIN A
ON ECOLI_DATA.ID = A.ID
ORDER BY ECOLI_DATA.ID

 

CASE WHEN 절에서 COUNT(*)라고만 썼더니 자꾸 GROUP BY 어쩌구 하면서 오류 나길래 

눈물이 났는데

 

서브쿼리로 저렇게 처리해주면 사용 가능!!! 하하.... 다시 해보자