본문 바로가기

Skill Sets/SQL

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

SMALL

안녕하세요! 데코입니다!

오늘은 프로그래머스 코딩테스트 연습에 있는 "상위 n개 레코드" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

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

1. 문제 :  상위 n개 레코드(Lv. 1)

2. 문제 설명

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

 

[ 예시 ]

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

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_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

 

3. 문제 풀이

# 1안
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1

 

이번 문제는 1안 한 가지로 작성했습니다!

#  1안 풀이 설명

## [ 문제 접근 설명 ]

예시를 보면  Jack이  'DATETIME' 컬럼의 값인 날짜가 가장 작으므로

가장 먼저 들어온 동물은 Jack이라는 것을 알 수 있어요!

( 'DATETIME' 컬럼은 보호소에 들어온 시간을 나타내요!)  

 

따라서 'DATETIME' 컬럼을 기준으로 오름차순 정렬해준 후 하나의 데이터만 조회하면 됩니다!

 

## [ 코드 작성 설명 ]

ANIMAL_INS의 테이블에 존재하는 컬럼들이 [출력 결과]에 나와 있는 컬럼들과 동일하게

 

" SELECT "를 통해 'NAME' 컬럼만을 선택

" ORDER BY DATETIME ASC"를 통해 'DATETIME' 컬럼을 기준으로 오름차순 정렬

" LIMIT 1 "을 통해 하나의 값만 조회하도록 코드를 작성했습니다!


4. 데코의 문제 풀이 후기

이번 문제는 ORDER BY 문을 통한 정렬 그리고 LIMIT 문을 통해 N개의 데이터만 조회하는 문제예요!

 

LIMIT 문은 이번 문제에서 처음 다뤄보네요!LIMIT이라는 단어에서 알 수 있듯이 조회한 데이터에서 몇 개의 데이터만을 조회할지 정할 수 있는 구문입니다!

 

기본적으로 조회하는 결과 모두가 나오는데

" LIMIT {N} " 구문을 추가하면 N개의 데이터만을 조회하여 확인할 수 있어요!

 

사실 전체를 조회해서 첫 번째 행(Row)만 봐도 확인이 가능합니다...! 

LIMIT 구문은 종종 쓰이는 구문이지만 반드시 알아야 하는 필수까지는 아닌 것 같아요...!

 

이번 문제는 ORDER BY 문을 통한 정렬 그리고 LIMIT 문을 통해 N개의 데이터만 조회하는 문제를 풀어봤습니다!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분은 그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해드릴게요!

공감과 댓글은 큰 힘이 됩니다!
읽어주셔서 감사해요!

 

또 다른 SQL 문제로 찾아뵐게요!

 

LIST