프로그래머스/프로그래머스 - SQL

[sql] 정렬 관련 문제

메타듀 2023. 2. 24. 15:45
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문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.

NAME    DATETIME
Rocky    2016-06-07 09:17:00
Shelly    2015-01-29 15:01:00
Benji    2016-04-19 13:28:00
Jackie    2016-01-03 16:25:00
*Sam    2016-03-13 11:17:00

[sql문]

SELECT NAME, DATETIME
FROM ANIMAL_INS
order by ANIMAL_ID desc;

여러 기준으로 정렬하기

[문제 설명]
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
A349996        Cat            2018-01-22 14:32:00    Normal                Sugar    Neutered Male
A350276        Cat            2017-08-13 13:50:00    Normal                Jewel    Spayed Female
A396810        Dog            2016-08-22 16:13:00    Injured                Raven    Spayed Female
A410668        Cat            2015-11-19 13:41:00    Normal                Raven    Spayed Female

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

ANIMAL_ID    NAME    DATETIME
A350276        Jewel    2017-08-13 13:50:00
A396810        Raven    2016-08-22 16:13:00
A410668        Raven    2015-11-19 13:41:00
A349996        Sugar    2018-01-22 14:32:00

[sql문]

SELECT ANIMAL_ID, NAME, DATETIME
from ANIMAL_INS
order by NAME, DATETIME desc;

상위 n개 레코드

[문제 설명]
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

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

[sql문]

SELECT name
From Animal_Ins
order by DATETIME Limit 1;
반응형