난이도 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 구문으로 구간을 나누어주고 값을 반환
'코딩테스트 > SQL테스트' 카테고리의 다른 글
[프로그래머스] (MySQL) ⭐⭐⭐ 특정 세대의 대장균 찾기 문제 풀이 💯 (61) | 2024.11.21 |
---|---|
[프로그래머스] 👩🏻💻 (MySQL) 오프라인/온라인 판매 데이터 통합하기 문제 풀이 (5) | 2024.11.21 |
[프로그래머스] 👩🏻💻 (MySQL) 대장균들의 자식의 수 구하기 문제 풀이 (44) | 2024.11.20 |
[프로그래머스] 👩🏻💻 (MySQL) IS NULL 관련 문제 풀이, ⭐ 업그레이드 할 수 없는 아이템 구하기 외 (47) | 2024.11.20 |
[프로그래머스] 👩🏻💻 (MySQL) 연도별 대장균 크기의 편차 구하기 (80) | 2024.11.20 |