SQL/문제풀이

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

응엉잉 2024. 2. 12. 23:05

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

처음에 생각한 쿼리는 다음과 같다.

WITH info AS (
    SELECT o.animal_id,
        i.sex_upon_intake,
        o.sex_upon_outcome
    FROM animal_outs o
        LEFT JOIN animal_ins i ON o.animal_id = i.animal_id
    WHERE i.sex_upon_intake LIKE '%intact%'
        AND (o.sex_upon_outcome LIKE ('%spayed%') OR
             o.sex_upon_outcome LIKE ('%neutered%'))
) -- 중성화한 동물을 서브쿼리로 작성

SELECT o.animal_id, o.animal_type, o.name
FROM animal_outs o
    LEFT JOIN info ON o.animal_id = info.animal_id
WHERE info.animal_id IS NOT NULL -- info에 animal_id를 가지고 있는 경우만 필터링
ORDER BY animal_id

 

WITH를 사용하지 않고도 풀 수 있는 문제이긴 하다.

SELECT o.animal_id,o.animal_type, o.name
FROM animal_outs o
    LEFT JOIN animal_ins i ON o.animal_id = i.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