2023 주니어 SRE 엔지니어 후레임

반응형

문제

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

 

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

 

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

 

  1. 이름을 사전 순으로 정렬하면 다음과 같으며, 'Jewel', 'Raven', 'Sugar'
  2. 'Raven'이라는 이름을 가진 개와 고양이가 있으므로, 이 중에서는 보호를 나중에 시작한 고양이(보호를 나중에 시작한건 2015년 Cat이 아닌 2016년 Dog인데, 고양이라고 해석이 잘못 되어있네요.)를 먼저 조회합니다.

따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


해답

ORDER BY 조건이 동시에 2개가 주어졌네요.

 

1차적으로 이름(NAME) 순으로 정렬하되, 만일 동일한 이름이 있을 경우

 

2차적으로 보호를 나중에 시작한 동물을 먼저, 즉 DATETIME이 큰 동물이 먼저, DATETIME이 작은 동물이 나중에 보여져야 하므로 큰->작은, 내림차순DATETIME으로 정렬해야 합니다.

 

둘을 합쳐 작성하면

 

ORDER BY NAME, DATETIME DESC;

이렇게 됩니다. (앞에 명시된 조건이 1차 정렬, 뒤에 오는게 2차 정렬)

 

 

 

가져올 칼럼은 ANIMAL_ID와 NAME, DATETIME입니다.

 

 

쿼리로 만들어보죠.

 

 

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;

 

 

 

 

 

아직까지는 풀만하죠?

 

 

 

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band