오랜 기간 보호한 동물(2)

수이·2025년 3월 7일
0

🟢 코드카타 / SQL

목록 보기
35/81
post-thumbnail

입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
문제링크

조건정리
1. 보호 기간이 가장 길었던 동물 두 마리
2. 보호 기간이 긴 순
3. 아이디와 이름 조회

풀이
1. 입양을 간 동물의 아이디와 이름
= 두 테이블에 다 정보가 있어야 함 INNER JOIN

SELECT i.ANIMAL_ID,
       i.NAME
FROM ANIMAL_INS i
INNER JOIN ANIMAL_OUTS o
ON i.ANIMAL_ID = o.ANIMAL_ID
  1. 보호 기간이 가장 긴 순 > 어제 배운 RANK를 써보기로 함.
    처음에는 JOIN한 걸로 끝인 줄 알았는데, 여기서 RANK로 계산한 결과값을 LIMIT으로 끊어줘야하기때문에 서브쿼리로 묶어주면 끝!
SELECT ANIMAL_ID,
       NAME
FROM
(
    SELECT i.ANIMAL_ID, 
           i.NAME,
           RANK() OVER(ORDER BY DATEDIFF(o.DATETIME, i.DATETIME) DESC) AS RANKING
FROM ANIMAL_INS i
INNER JOIN ANIMAL_OUTS o
ON i.ANIMAL_ID = o.ANIMAL_ID
)sub
LIMIT 2 -- RANK 기반 / 2마리 제한

0개의 댓글

관련 채용 정보