https://school.programmers.co.kr/learn/courses/30/lessons/59409
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드설명
CASE WHEN + LIKE 를 활용합니다.
주어진 문제를 보면 Neutered 는 형용사로써 항상 앞에 붙는것을 알 수 있습니다.
그러므로 Neutered% 로 뒤에 값들을 검색하도록 합니다.
코드
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE LIKE ("Neutered%") OR SEX_UPON_INTAKE LIKE ("Spayed%") THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE IN ('Neutered Male', 'SPAYED FEMALE') THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORACLE
SELECT AI.ANIMAL_ID, AI.NAME,
CASE WHEN
AI.SEX_UPON_INTAKE LIKE '%Neutered%' OR AI.SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END AS "중성화"
FROM ANIMAL_INS AI
ORDER BY AI.ANIMAL_ID
아래와 같이 REGEXP_LIKE를 사용한다면 더 짧게 코딩할 수 있습니다.
이 문제의 경우 항상 Neutered, Spayed 로 시작하므로 '^(Neutered|Spayed)' 로 가능합니다. 이렇게 시작값을 기준으로 한다면 당연히 성능은 더 개선될 겁니다.
SELECT AI.ANIMAL_ID, AI.NAME,
CASE WHEN
REGEXP_LIKE(AI.SEX_UPON_INTAKE, '(Neutered|Spayed)') THEN 'O'
ELSE 'X'
END AS "중성화"
FROM ANIMAL_INS AI
ORDER BY AI.ANIMAL_ID
'SQL > 프로그래머스' 카테고리의 다른 글
[SQL][프로그래머스] 동물 수 구하기 - COUNT MYSQL ORACLE (0) | 2024.04.04 |
---|---|
[SQL][프로그래머스] 중복 제거하기 - DISTINCT + COUNT + IS NOT NULL MYSQL ORACLE (0) | 2024.04.03 |
[SQL][프로그래머스] NULL 처리하기 - CASE WHEN + IS NULL + NVL MYSQL ORACLE (0) | 2024.04.03 |
[SQL][프로그래머스] 입양 시각 구하기(1) - HOUR MYSQL ORACLE (0) | 2024.04.02 |
[SQL][프로그래머스] DATETIME에서 DATE로 형 변환 - DATE_FORMAT + TO_CHAR MYSQL ORACLE (0) | 2024.04.02 |