초보 개발자의 이야기, 릿허브

[MySQL] 프로그래머스 SQL 여러 기준으로 정렬하기 본문

코딩테스트/📒 SQL

[MySQL] 프로그래머스 SQL 여러 기준으로 정렬하기

릿99 2021. 9. 28. 12:06
728x90
반응형
1. 문제이해

https://programmers.co.kr/learn/courses/30/lessons/59404

 

코딩테스트 연습 - 여러 기준으로 정렬하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

위와 같은 정보를 가진 ANIMAL_INS 테이블에서

동물의 아이디, 이름, 보호 시작일을 이름 순으로 조회하는 것이 목표이다.

단, 이름이 같은 동물인 경우에는 보호를 나중에 시작한 동물을 먼저 보여주어야한다.



2. 문제풀이

 

ANIMAL_INS 테이블에서, 동물의 아이디, 이름, 보호 시작일을 추출하는 것이 목표이다.

단, 이름 순으로 먼저 조회하되, 이름이 같을 경우 보호시작일을 기준으로 보여주어야한다.

보호시작일이 늦는 동물부터 보여주어야하므로,

이름은 오름차순, 보호시작일은 내림차순으로 조회해야한다.

 

 

 

3. 정답
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC

SELECT : ANIMAL_IN, NAME, DATETIME 값을 조회

FROM : ANIMAL_INS에서

ORDER BY : NAME(이름) 순으로 먼저 조회하되, 

NAME 값이 같으면 DATETIME(보호시작일) 순으로 내림차순 조회

 

해당 문제에서는 이름이 같은 경우, 보호시작일이 최근(늦는)인 순서대로 조회해야한다.

이러한 경우, 우선 NAME(이름) 컬럼을 기준으로 정렬해야 하므로 먼저 쓰고,

동일한 이름이 나오는 경우, 뒤에 DATETIME(보호시작일) 값을 기준으로

DESC(내림차순) 조회하면 알맞은 결과가 나오게 된다.

 

SQL 쿼리문에서 ORDER BY 구문은 ","를 기준으로 여러가지 정렬 조건 설정이 가능하다.

정렬조건이 여러 개인 경우, 앞에 있는 정렬조건을 기준으로 하되,

앞에 있는 정렬조건 후 같은 값이 발생할 경우, 뒤에 있는 정렬조건을 따르도록 한다.

 

 


 

 

 

 

 

728x90
반응형