~고군분투 인생살이~

[JOIN] 보호소에서 중성화한 동물 본문

SQL/프로그래머스

[JOIN] 보호소에서 중성화한 동물

소금깨 2022. 5. 22. 04:33

1. 문제 설명

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다.

보호소에 들어올 당시에는 중성화 되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의

아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

 

 

2. 문제 풀이

해당 문제는 서브쿼리를 써야 할 것 같다는 생각이 들었습니다.

 

1. 보호소에 들어올 당시에는 중성화 되어 있지 않았지만, 보호소를 나갈 당시에는 중성화 된 => 해당 결과를 찾기 위해서는 INS와 OUTS 테이블을 LEFT JOIN 해야합니다.

 

2. 보호소에 들어올 당시에는 중성화가 되지 않은=> 해당 데이터를 찾기 위해서 INS 테이블 SEX_UPON_INTAKE 컬럼에 있는 데이터 중 'INTACT%' 를 포함하는 데이터를 찾아줍니다.=> 이렇게 찾은 데이터를 서브쿼리로 사용 할 계획입니다.

 

3. 보호소를 나갈 당시에는 중성화가 된 => 중성화가 되지 않은 동물의 데이터를 가진 INS 테이블과 OUTS 테이블을 JOIN 합니다. => INS 테이블과 OUTS 테이블에서 중성화 상태 데이터가 같지 않다면, 우리가 찾는 데이터가 됩니다.  

 

3. 정답

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM (SELECT *
     FROM ANIMAL_INS
     WHERE SEX_UPON_INTAKE LIKE 'Intact%') A
    LEFT JOIN ANIMAL_OUTS B
    ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.SEX_UPON_INTAKE != B.SEX_UPON_OUTCOME
ORDER BY 1;
Comments