본문 바로가기

Algorithm/SQL

(MYSQL) - 프로그래머스 (SQL 고득점 kit - GROUP BY) : 오랜 기간 보호한 동물(2)

반응형

programmers.co.kr/learn/courses/30/lessons/59411

 

코딩테스트 연습 - 오랜 기간 보호한 동물(2)

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

외래 키로 다른 테이블을 참조하여 원하는 데이터를 얻는 문제였습니다.

 

풀이방법

 1. 테이블 및 열 선택 : 먼저 테이블을 선택합니다. ANIMAL_INS를 A로 정의하고 ANIMAL_OUTS를 B로 정의합니다. 그 후 열을 선택합니다. A테이블의 열들인 ANIMAL_ID, NAME을 선택합니다.

 

 2. 조건 세우기 : WHERE절을 이용해 두 동물의 아이디가 같을 때 데이터를 가져오도록 설정합니다.

 

 3. 정렬 : 보호된 기간이 가장 오래되었다는 말은 ANIMAL_OUTS의 DATETIME열 - ANIMAL_INS의 DATETIME열을 시행하게 되면 보호된 기간이 나오므로 이 값이 가장 큰 값이라고 할 수 있습니다. 따라서 ORDER BY를 이용해 해당 조건을 설정하고 내림차순으로 정렬합니다.

 

 4. 표현할 행 수 정하기 : LIMIT 2로 설정해 표시할 행의 개수를 2개로 제한합니다.

 

Code

SELECT A.ANIMAL_ID, A.NAME 
FROM ANIMAL_INS A, ANIMAL_OUTS B 
WHERE A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME - A.DATETIME DESC
LIMIT 2