01/24 SQL 문제풀이

Data Architect / Engineer·2024년 1월 24일
1

1일_1SQL

목록 보기
13/63
post-thumbnail

문제

  • 프로그래머스 SQL 문제
  • 오랜 기간 보호한 동물(2) / 레벨 3
  • 문제 내용 : 하단 프로그래머스 문제 [링크]


내가 작성한 Query

SELECT A.ANIMAL_ID
    , A.NAME
FROM ANIMAL_INS A
    JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(B.DATETIME, A.DATETIME) DESC
LIMIT 2;
  • 'ANIMAL_INS'와 'ANIMAL_OUTS' 테이블을 모두 사용해야 하므로, JOIN을 이용하여 'ANIMAL_ID' 기준으로 INNER JOIN
  • 보호 기간, 즉 'ANIMAL_OUTS.DATETIME'과 'ANIMAL_INS.DATETIME'의 일수 차이를 구하고 그 값이 큰 상위 2개의 데이터를 출력해야하므로, ORDER BY를 이용하여 내림차순 정렬
  • 이 때 보호기간은 DATEDIFF 함수로 두 'DATETIME' 사이의 일 수를 구해준다.
  • LIMIT을 사용해 상위 2개의 데이터를 출력

profile
질문은 계속돼 아오에

0개의 댓글