[프로그래머스 SQL] 보호소에서 중성화한 동물

Hoehenflug·2022년 3월 14일
0

프로그래머스

목록 보기
7/13

SQL 관련 모든 문제들은 MySQL을 기준으로 해결했다.

1. 문제


  • 중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시되어있습니다.

2. 해결 방법

ANIMAL_INS 테이블에서 중성화하지 않은 값(SEX_UPON_INTAKE 부분에 'Intact'가 붙은)만 가져와서 ANIMAL_OUT 테이블에서는 중성화가 된 값(SEX_UPON_OUTCOME 부분에 'Spayed' 또는 'Neutered'가 붙은)들을 ANIMAL_OUT의 ANIMAL_ID로 정렬해 출력하라는 것으로 문제를 정리할 수 있다.
이번에도 JOIN을 사용해서 두 테이블을 매치해 값을 가져오면 된다.
그리고 특정 문자가 포함되어 있는지를 검색해야 하는데, 이 때 LIKE를 사용한다.
LIKE는 이렇게 사용하면 된다.

# abc로 시작하는 책 제목 검색
SELECT * FROM book WHERE title LIKE 'abc%';

# abc로 끝나는 책 제목 검색
SELECT * FROM book WHERE title LIKE '%abc';

# abc가 들어가는 책 제목 검색
SELECT * FROM book WHERE title LIKE '%abc%';

3. 해결!

SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_OUTS O
JOIN ANIMAL_INS I
ON O.ANIMAL_ID=I.ANIMAL_ID
WHERE (O.SEX_UPON_OUTCOME LIKE '%Neutered%' OR O.SEX_UPON_OUTCOME LIKE '%Spayed%') AND I.SEX_UPON_INTAKE LIKE '%Intact%';

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/59045

0개의 댓글