My SQL / sublime
입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
풀이
제출한 오답 1
-- 코드를 입력하세요
SELECT B.ANIMAL_ID, B.NAME, DATE(B.DATETIME) - DATE(A.DATETIME) C
FROM ANIMAL_INS A JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY C DESC
-> 여기서 LIMIT 2 구문을 사용하면 정답을 맞출 수는 있다. 요구하는 형식으로 출력하지 못해서 그렇지.. 상위 n개 구하기가 몇 번 나왔는데 연습이 많이 필요한 것 같다. 조건이 있으면 무조건 조건문을 써야겠다는 일차원적 생각도..???
다른 답 1
-- 코드를 입력하세요
SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS AS A JOIN ANIMAL_OUTS AS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME - A.DATETIME DESC
LIMIT 2
질문하기에 공유된 방식. ORDER BY에 연산자를 사용하는 방법인데 직관적인 좋은 방법같다! 하지만 조금 아쉽다.. 좀 더 디벨롭 하고 싶다.
다른 답 2
-- 코드를 입력하세요
SELECT B.ANIMAL_ID, B.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;
-> DATEDIFF 함수를 사용하는 방식이다. 엑셀에서 DATEIF 함수와 동일한데 명칭이 조금 달라서 생소했다.
몰랐던 문법
DATEDIFF (일자 1, 일자 2)
->'일자 2 - 일자 1'의 차이를 리턴
'데이터 분석 > SQL 연습문제' 카테고리의 다른 글
196. Delete Duplicate Emails (LeetCode) (0) | 2022.09.16 |
---|---|
627. Swap Salary (LeetCode) (0) | 2022.09.15 |
코테 연습 25일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.03.08 |
코테 연습 24일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.03.07 |
코테 연습 23일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.03.05 |
댓글