개발하는 자몽

[프로그래머스] JOIN > 오랜 기간 보호한 동물(1) 본문

SQL

[프로그래머스] JOIN > 오랜 기간 보호한 동물(1)

jaamong 2024. 2. 1. 20:40

문제

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

아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해 주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.

 

풀이

  • 입양을 못 간 동물 → 즉, 아직 보호소에 있는 동물
  • 가장 오래 보호소에 있었던 동물 3마리
  • 이름, 보호 시작일 조회
  • 보호 시작일 순으로 조회
SELECT i.NAME, i.DATETIME
FROM ANIMAL_INS i LEFT OUTER JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID
WHERE o.ANIMAL_ID IS NULL
ORDER BY i.DATETIME LIMIT 3;
  1. 아직 보호소에 있는 동물만 조회해야 하므로 `OUTER JOIN`을 사용해야 한다.
    • `ANIMAL_INS` 테이블을 왼쪽 테이블로 두었을 때 사용해야 하는 JOIN은 `LEFT OUTER JOIN`이며, `ANIMAL_OUTS` 테이블의 `ANIMAL_ID`가 `NULL`인 경우를 조회해야 한다. (그렇지 않으면 같이 조회됨)
    • 두 테이블의 `ANIMAL_ID`를 기준(ON)으로 JOIN 한다.
  2. 보호 시작일 순으로 조회하면서 가장 오래 보호소에 있었던 동물 3마리를 조회하기 위해 `DATETIME`을 기준으로 조회하며 뒤에 `LIMIT` 절을 붙인다.

 

 

 

Comments