중성화 여부 파악하기
문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAMETYPENULLABLEANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 칼럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.
풀이
코드 블록
SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%','O', 'X') AS "중성화" FROM ANIMAL_INS
이전에 NULL일 경우 필드의 값을 변경하여 출력하는 문제와 비슷한 형태의 문제입니다.
1. 한 가지 다른 점이 있다면 중성화를 한 경우에 대한 판단을 할 때 딱 한 가지 단어로 표현하는 것이 아니고 예제에서만 보아도 'Neutered Male', 'Spayed Female'의 경우로 두 가지로 나타낸다는 다른 점이 있어서 조건을 두 가지를 넣어야 합니다.
- 처음 시도에서 Neutered 관련된 문자열만을 확인하여 검사를 하였는데 실패를 하여서 Spayed를 알아보니 암컷 동물을 중성화시키는 의미가 있다는 것을 알았습니다.
2. 정확히 같은 값이 아닌 비슷한 값을 확인하는 쿼리문으로는 LIKE가 있습니다. '검색할 필드명' LIKE '정규식'의 구조로 사용할 수 있으며 % 확인할 문자열%라고 한다면 앞뒤로 어떤 문자가 들어오던지 상관없이 확인할 문자열이 있으면 참으로 판단하는 구문이 되게 됩니다.
3. 여기에 논리식인 OR를 사용하여 조건문 뒤에 조건을 넣어주도록 합니다. 조건문의 구조는 2번에 설명한 내용과 같습니다.
4. 조건문 구성을 끝낸 후에 ' , '를 이용하여 인자 구분을 해줍니다. 2번째 인자는 참으로 판별되었을 때인 'O'를 출력한다는 내용이며 3번째 인자는 거짓일 경우에는 'X' 출력한다는 내용입니다.
5. 조건문에서 데이터에 따라서 결정된 내용은 "중성화"라는 필드로 출력 값에 전달됩니다.
'DevLog' 카테고리의 다른 글
[Troubleshooting] selenium 'find_element_by_name' object has no attribute (0) | 2022.10.15 |
---|---|
[Troubleshooting] selenium : DeprecationWarning: executable_path has been deprecated (0) | 2022.10.15 |
[프로그래머스] SQL NULL 처리하기 (0) | 2022.10.01 |
[프로그래머스] SQL 입양 시각 구하기(1) (0) | 2022.09.30 |
[프로그래머스] SQL DATETIME에서 DATE로 형 변환 (1) | 2022.09.30 |