SQL

[프로그래머스/MySQL] 상위 n개 레코드

AKIRA24 2024. 7. 22. 21:26
728x90

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAME TYPE NULLABLE
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

문제

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

※ 보호소에 가장 먼저 들어온 동물은 한 마리인 경우만 테스트 케이스로 주어집니다.

 

정답

    SELECT NAME
    FROM ANIMAL_INS
    WHERE DATETIME
    ORDER BY DATETIME ASC
    LIMIT 1;
    
    SELECT NAME
    FROM ANIMAL_INS
    ORDER BY DATETIME ASC
    LIMIT 1;

 

풀이

레벨 1의 문제들을 꾸준히 풀면서 나왔던 내용들이 짧게 하나씩 나왔다는 생각이 들었다. 간단한 조건으로 WHERE DATETIME으로 동물들이 보호소에 들어온 날짜를 기준에서 찾고 그중에서 날짜를 기준으로 오름차순을 하고 그 중에서 첫번째의 데이터만 출력하면 되는 문제였다. 처음에는 WHERE도 같이 사용을 했지만 다시 생각해보니 굳이 WHERE을 사용할 필요가 없는 문제라는걸 깨닫고 밑의 답으로 다시 제출했고, 정답임을 확인했다. 정확한 데이터를 추출하는 것 뿐만 아니라 쿼리의 길이를 조금씩 줄여나가는 것도 같이 연습 해야할 것 같다.