[SQL] 프로그래머스 SQL 고득점 Kit (2)

이정진·2021년 9월 19일
0

SQL

목록 보기
2/23
post-thumbnail

아픈 동물 찾기

SQL 구분 : SELECT

문제

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

동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

문제 풀이

where like 구분으로 해당 상태와 일치하는 값만 뽑아내면 되는 문제였다.

SQL

select ANIMAL_ID, NAME
from ANIMAL_INS
where INTAKE_CONDITION like '%Sick%'

어린 동물 찾기

SQL 구분 : SELECT

문제

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

동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

문제 풀이

where not like 구분으로 해당 상태와 일치하는 값만 뽑아내면 되는 문제였다.

SQL

select ANIMAL_ID, NAME
from ANIMAL_INS
where INTAKE_CONDITION not like '%Aged%'

동물의 아이디와 이름

SQL 구분 : SELECT

문제

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

동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해
주세요

문제 풀이

order by ANIMAL_ID asc로 오름차순으로 조회할 수 있도록 하면 되는 문제였다.

SQL

select ANIMAL_ID, NAME
from ANIMAL_INS
order by ANIMAL_ID asc

여러 기준으로 정렬하기

SQL 구분 : SELECT

문제

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

동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.

예시
이름을 사전 순으로 정렬하면 다음과 같으며, 'Jewel', 'Raven', 'Sugar'
'Raven'이라는 이름을 가진 개와 고양이가 있으므로, 이 중에서는 보호를 나중에 시작한 고양이를 먼저 조회합니다.

문제 풀이

order by를 활용하여 정렬하면 되는데, NAME이 같을 경우, DATETIME을 기준으로 정렬을 다시 하여야 하기 때문에, NAME asc 뒤에 DATETIME desc를 활용하여 여러 기준에 맞추어 정렬될 수 있도록 작성하였다.

SQL

select ANIMAL_ID, NAME, DATETIME
from ANIMAL_INS
order by NAME asc, DATETIME desc

상위 n개 레코드

SQL 구분 : SELECT

문제

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

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

문제 풀이

가장 먼저 들어온 동물이므로 DATETIME을 오름차순으로 정렬하여 맨 처음의 행만 도출시키면 되는 문제이다. 맨 처음의 행만 조회해야 하므로 limit 1로 출력 수의 제한을 걸어서 푸는 문제였다.
limit의 활용 방식은 크게 2가지가 있는데, 첫 번째는 limit (숫자)로, 숫자의 값만큼 행을 출력하도록 제한을 걸 수 있고, 두 번째는 limit (시작 위치) (마지막 위치)로, 시작 위치에서 마지막 위치까지만의 행을 출력하도록 제한을 걸 수 있다.

SQL

select NAME
from ANIMAL_INS
order by DATETIME asc
limit 1

0개의 댓글