Posts [프로그래머스] 아픈 동물 찾기, 여러 기준으로 정렬하기
Post
Cancel

[프로그래머스] 아픈 동물 찾기, 여러 기준으로 정렬하기

[프로그래머스] 아픈 동물 찾기, 여러 기준으로 정렬하기


프로그래머스의 SQL Kit에 있는 SELECT 문제들 중

  1. 아픈 동물 찾기
  2. 여러 기준으로 정렬하기

문제입니다.


1. 레코드에서 원하는 조건 조회하기

ANIMAL_INS 테이블에 동물들의 정보가 담겨 있습니다. 각 테이블에는 다음과 같은 column들이 있습니다.

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

위 정보들에서 아픈 동물(INTAKE_CONDITION=’Sick’)의 아이디와 이름을, 아이디 순으로 조회하는 SQL문을 작성해야 합니다.


  • 조회 : SELECT 를 활용합니다.
  • 조건 : WHERE 절을 활용합니다.
  • 정렬 : order by 를 활용합니다.

조회할 열은 ANIMAL_ID 와 NAME이고, 그 데이터 중 INTAKE_CONDITION이 Sick 인 row만 출력해야 합니다. 그리고 order by 를 사용하여, 정렬 기준이 될 컬럼을 지정합니다.

1
SELECT animal_id, name FROM ANIMAL_INS where intake_condition = 'Sick' order by animal_id

2. 여러 기준으로 정렬하기

위 테이블 데이터들에서, 모든 동물의 아이디 / 이름 / 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해야 합니다.

단, 1. 이름이 같은 동물이 있다면 2. 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.

이 조건으로부터 order by 절에 들어갈 열 조건이 2개임을 알 수 있습니다.


  • 조회 : SELECT 를 활용합니다.
  • 정렬 : order by 를 활용합니다. order by 절에 쓰인 column 명 순서대로 정렬을 진행합니다. 이 때, 정렬 기준이 되는 열을 여러 개 지정하려면 ,로 연결하여 작성하면 됩니다.
  • 예를 들어 order by NAME, DATETIME desc 이라고 쓰면, name의 오름차순 순서대로 정렬하고, name이 동일할 경우 DATETIME의 내림차순 순서대로 정렬하게 됩니다.

1
SELECT ANIMAL_ID, NAME, DATETIME from ANIMAL_INS order by NAME asc, DATETIME desc
  • NAME 에 붙인 asc는 없어도 상관없지만, DATETIME을 내림차순 정렬하기 위해 붙인 desc와 구분이 더욱 잘 되도록 작성한 것입니다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges