https://school.programmers.co.kr/learn/courses/30/lessons/59411
[문제]
입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
[나의 풀이]
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
LEFT JOIN ANIMAL_OUTS O
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE O.DATETIME IS NOT NULL
ORDER BY TIMESTAMPDIFF(SECOND,I.DATETIME,O.DATETIME) DESC
LIMIT 2;
+) TIMESTAMPDIFF를 SELECT절에 넣어서 확인해봤을 때 아래와 같이 출력됨
[다른 풀이]
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
INNER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(AO.DATETIME, AI.DATETIME) DESC
LIMIT 2;
INNER JOIN을 하는 경우 WHERE O.DATETIME IS NOT NULL같은 조건을 작성해주지 않아도 된다.
그런데 DATEDIFF()로 연산하게되면 같은 날 들어오고 같은 날 입양간 경우를 가려내지 못할거란 생각이 든다
'프로그래머스 > My SQL' 카테고리의 다른 글
조건별로 분류하여 주문상태 출력하기 (0) | 2024.11.26 |
---|---|
헤비 유저가 소유한 장소 (0) | 2024.11.25 |
오랜 기간 보호한 동물(1) (0) | 2024.11.24 |
있었는데요 없었습니다 (0) | 2024.11.23 |
없어진 기록 찾기 (0) | 2024.11.22 |