본문 바로가기
연습장/SQL

[프로그래머스] Lv.3 대장균 크기에 따라 분류하기 1 (MySQL)

by Ruas 2024. 8. 9.
728x90

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제
대장균 개체의 크기가 100 이하라면 'LOW', 100 초과 1000 이하라면 'MEDIUM', 1000 초과라면 'HIGH' 라고 분류합니다. 대장균 개체의 ID(ID) 와 분류(SIZE)를 출력하는 SQL 문을 작성해주세요.이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요.

 

1. 대장균 크기 분류

 

문제에서 제시한 조건대로 SIZE를 분류하기 위해서는 CASE 구문을 사용해야 한다.

 

 

MySQL :: MySQL 8.4 Reference Manual :: 15.6.5.1 CASE Statement

CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE Or: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE T

dev.mysql.com

 

CASE 구문의 경우 'CASE WHEN ~ THEN ~ END ~' 의 순서로 구성되며,

구분해야하는 분류의 개수에 따라 'WHEN ~ THEN ~' 구문을 늘리고 줄일 수 있다.

별도의 조건이 필요없는 경우라면 'ELSE ~' 구문을 사용할 수 있으나, 해당 문제에서는 불필요하다.

 

위 문제에서는 총 3개의 분류를 제시하고 있기 때문에, 총 3번의 WHEN ~ THEN ~ 구문 반복이 발생한다.

모든 분류가 완료되면, 'END (컬럼 명)'으로 마무리한다.

 

SELECT CASE WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
WHEN SIZE_OF_COLONY > 100 AND SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH'
END SIZE

 

 

2. 전체 코드

SELECT ID
,CASE WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
WHEN SIZE_OF_COLONY > 100 AND SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH'
END SIZE
FROM ECOLI_DATA
ORDER BY ID
728x90

댓글