집 짓는 개발블로그
[프로그래머스] 대장균의 크기에 따라 분류하기 2 (MySQL) - ROWNUM 본문
https://school.programmers.co.kr/learn/courses/30/lessons/301649
소요시간: ♾️
정답
WITH
ROWNUMBER AS (
SELECT
@ROWNUM := @ROWNUM + 1 AS 'ROWNUMM', ED.ID
FROM ECOLI_DATA ED, (SELECT @ROWNUM:=0) TMP
ORDER BY ED.SIZE_OF_COLONY DESC
)
SELECT
E.ID,
CASE WHEN R.ROWNUMM <= 0.25 * (SELECT COUNT(*) FROM ECOLI_DATA) THEN 'CRITICAL'
WHEN R.ROWNUMM <= 0.5 * (SELECT COUNT(*) FROM ECOLI_DATA) THEN 'HIGH'
WHEN R.ROWNUMM <= 0.75 * (SELECT COUNT(*) FROM ECOLI_DATA) THEN 'MEDIUM'
ELSE 'LOW'
END AS 'COLONY_NAME'
FROM ECOLI_DATA E
JOIN ROWNUMBER R ON E.ID = R.ID
ORDER BY E.ID ASC;
평이한 코테 SQL은 이제 그럭저럭 풀 수 있어서 잠깐 sql 방치했더니 엄청 헤맸다.
더 좋은 방법이 있을 것 같은데 생각이 잘 안 난다.
'MySQL' 카테고리의 다른 글
[프로그래머스] 조건에 맞는 개발자 찾기 (MySQL) - EXISTS, 서브쿼리 (0) | 2024.06.22 |
---|---|
[프로그래머스] 업그레이드 할 수 없는 아이템 구하기 (MySQL) - IN, EXISTS, NULL, Three-valued logic (0) | 2024.06.21 |
[프로그래머스] 헤비 유저가 소유한 장소 (MySQL) (0) | 2024.06.21 |
[프로그래머스] 부모의 형질을 모두 가지는 대장균 찾기 (MySQL) - 비트 연산자 &, |, ^ (0) | 2024.06.20 |
MySQL 일련번호 테이블 만들기(@ROWNUM) (0) | 2024.06.20 |