[ Programmers ] Lv1. 여러 기준으로 정렬하기 (MySQL)

ma.caron_g·2022년 11월 7일
0

MySQL Algorithm

목록 보기
7/20
post-thumbnail

1. Problem 📃

[ 여러 기준으로 정렬하기 ]

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


[ 문제 설명 ]

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

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE

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


2. Example 📚

[ 입출력 예시 ]

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

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A349996Cat2018-01-22 14:32:00NormalSugarNeutered Male
A350276Cat2017-08-13 13:50:00NormalJewelSpayed Female
A396810Dog2016-08-22 16:13:00InjuredRavenSpayed Female
A410668Cat2015-11-19 13:41:00NormalRavenSpayed Female
  1. 이름을 사전 순으로 정렬하면 다음과 같으며, 'Jewel', 'Raven', 'Sugar'
  2. 'Raven'이라는 이름을 가진 개와 고양이가 있으므로, 이 중에서는 보호를 나중에 시작한 개를 먼저 조회합니다.

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


3. Solution 🔑

  1. 동물의 아이디(ANIMAL_ID)이름(NAME), **보호 시작일(DATETIME)을 조회
    • SELECT ANIMAL_ID, NAME, DATETIME
  2. 해당 테이블 조회
    • FROM ANIMAL_INS
  3. 이름(NAME)순으로 조회
    • ORDER BY NAME ASC,
  4. 이름이 같다면 보호를 나중에 시작한 동물부터 (역정렬 DESC)
    • DATETIME DESC

4. Code 💻

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

5. Growth 🍄

  • ORDER BY [필드명][정렬 모드] : 조회 목록을 정렬하는 명령어로 기본값은 ASC로 오름차순이며, DESC로 내림차순도 있다.
    • 두 가지를 정렬할 경우 가장 먼저 정렬할 경우를 적어주고 콤마(,)를 찍어 그 다음 기준을 정의해줍니다.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글