본문 바로가기
코딩테스트/SQL

[프로그래머스 SQL Kit SELECT] 상위 N개 레코드

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

    NAMETYPENULLABLE
    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 문을 작성해주세요.

    예시

    예를 들어 ANIMAL_INS 테이블이 다음과 같다면

    ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
    A399552 Dog 2013-10-14 15:38:00 Normal Jack Neutered Male
    A379998 Dog 2013-10-23 11:42:00 Normal Disciple Intact Male
    A370852 Dog 2013-11-03 15:04:00 Normal Katie Spayed Female
    A403564 Dog 2013-11-18 17:03:00 Normal Anna Spayed Female

    이 중 가장 보호소에 먼저 들어온 동물은 Jack입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

    NAME
    Jack

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


    본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.

     

- 이름으로 조회

- 동물 보호소에 가장 먼저 들어온 동물 즉, 날짜가 가장 빠른 동물 한 마리만 조회

 

문제 결과 :

SELECT      NAME
FROM        (SELECT * FROM ANIMAL_INS ORDER BY DATETIME)
WHERE       ROWNUM = 1;

 

주의 할 점.

1. 서브쿼리로 먼저 ORDER BY 를 한다.

2. ROWNUM = 1 을 활용한다.

: 오라클의 경우에는 쿼리가 실행되는 순서 때문에 

SELECT	 NAME
FROM	 ANIMAL_INS
WHERE	 ROWNUM = 1
ORDER BY DATETIME;

이 와 같이 작성하게 되면 엉뚱한 데이터가 나오게 되니 주의 !

반응형
LIST

댓글