본문 바로가기
코딩테스트

프로그래머스 SQL 고득점 Kit String Date 오랜 기간 보호한 동물(2)

by 쎄정 2022. 5. 23.
728x90
반응형

 

접속 링크

https://programmers.co.kr/learn/courses/30/lessons/12950?language=javascript

 

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

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

programmers.co.kr

 

문제 설명

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

 

테이블 

- ANIMAL_INS

ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

 

- ANIMAL_OUTS

ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_OUTCOME VARCHAR(N) FALSE

 

포인트

보호기간을 찾는 방법, ANIMAL_OUTS의 입양일 - ANIMAL_INS 보호시작일

ANIMAL_OUTS와 ANIMAL_INS를 조인하여 보호기간을 추출한다.

추출한 내역을 보호기간의 역순으로 추출한다. (보호기간이 긴 순서)

ROWNUM을 활용하여 최상위 2개를 추출한다.

 

SQL

SELECT ANIMAL_ID, NAME
FROM (
        SELECT A.ANIMAL_ID
            ,A.NAME
            ,B.DATETIME - A.DATETIME
        FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B
        ON A.ANIMAL_ID = B.ANIMAL_ID
        ORDER BY 3 DESC
)
WHERE ROWNUM <= 2

 

728x90
반응형

댓글