상위 n개 레코드

2022. 11. 20. 14:24SQL 문제

문제 설명

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

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

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59405


정답
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1

LIMIT 함수를 잘 알지 못해서 쉬운 문제임에도 풀지 못하였다. LIMIT함수는 변수를 하나만 가질수있지만 OFFSET 함수를 쓰게 되면 변수를 두가지를 가질수 있는데 하나만 쓰게 되면 해당숫자에 해당하는 갯수의 데이터만을 차례로 조회한다. 만약 두개의 변수를 넣게되면 첫번째 변수에 해당 위치부터 두번째 해당하는 변수까지 해당하는 갯수의 데이터를 조회해온다. 주의할것은 OFFSET값은 0부터 시작하기 때문에 10이라 적어도 11행부터 가져온다.