#71. JOIN : 보호소에서 중성화한 동물 | 프로그래머스 | SQL 고득점 Kit

문제

 

입력 코드

1. 

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

 

2.

SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME 
FROM ANIMAL_INS AS I 
    JOIN ANIMAL_OUTS AS O 
WHERE (I.ANIMAL_ID = O.ANIMAL_ID)
	AND (I.SEX_UPON_INTAKE != O.SEX_UPON_OUTCOME)
ORDER BY I.ANIMAL_ID;

→ 보호소에 들어올 당와 보호소에 들어온 후의 성별이 다른 동물을 찾는 방법도 있음 (중성화가 아니라면 성별이 바뀌는 일이 없기 때문)

 

 

비교연산자

# 1. !=
I.SEX_UPON_INTAKE != O.SEX_UPON_OUTCOME

# 2. <>
I.SEX_UPON_INTAKE <> O.SEX_UPON_OUTCOME

# 3. NOT LIKE
I.SEX_UPON_INTAKE NOT LIKE O.SEX_UPON_OUTCOME

 

3. 정규식(REGEXP)

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS AS A 
    LEFT JOIN ANIMAL_OUTS AS B
    ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE REGEXP_LIKE(A.SEX_UPON_INTAKE, 'Intact')
    AND REGEXP_LIKE(B.SEX_UPON_OUTCOME, 'Spayed|Neutered')
ORDER BY A.ANIMAL_ID;

 

 

코드 설명

#SELECT #JOIN #LIKE #ORDER BY #비교연산자 #정규식 #REGEXP

 

 

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/59045