Hodustory/프로그래밍&DB

[SQL] 프로그래머스 : 오랜 기간 보호한 동물(1)(NOT EXISTS)

호두밥 2021. 7. 25. 15:27

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/59044

 

코딩테스트 연습 - 오랜 기간 보호한 동물(1)

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

2. 풀이

  • 아직 입양을 못 간 동물 (INS 테이블에는 있지만 OUT 테이블에 없는 동물) : NOT EXISTS
    • NOT EXISTS 서브쿼리 : 서브쿼리 목록에 값이 존재하지 않는 것들만 출력하도록 하는 조건
  • 가장 오래 보호소에 있던 동물 3마리 : ORDER BY , ROWNUM(오라클), LIMIT(MYSQL)

3. 답안

--MYSQL
SELECT  I.NAME, I.DATETIME
    FROM ANIMAL_INS I 
    WHERE NOT EXISTS (SELECT 1 FROM ANIMAL_OUTS O WHERE I.ANIMAL_ID = O.ANIMAL_ID)
    ORDER BY I.DATETIME
LIMIT 3
--ORACLE
SELECT * FROM
    (SELECT  I.NAME, I.DATETIME
    FROM ANIMAL_INS I 
    WHERE NOT EXISTS (SELECT 1 FROM ANIMAL_OUTS O WHERE I.ANIMAL_ID = O.ANIMAL_ID)
    ORDER BY I.DATETIME
    ) T
WHERE ROWNUM <= 3

 

반응형