상세 컨텐츠

본문 제목

[SQL] 특정 값 우선 조회하기(order by field)

SQL

by ollive 2024. 7. 1. 20:00

본문

<문제>

동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

<풀이1>

동물의 타입별로 GROUP BY()하여 그 수를 COUNT()함수를 통해 집계해주면 된다. 고양이는 'cat'으로 개는 'dog'로 입력되어있어 정렬을 안해도 고양이가 먼저 나오게 된다.

SELECT distinct ANIMAL_TYPE, count(ANIMAL_ID)
FROM ANIMAL_INS
group by ANIMAL_TYPE
order by ANIMAL_TYPE

<풀이2 : order by field(column, '1순위 정렬 값', '2순위 정렬 값',,,)>

고양이가  'kitty' 와 같은 값이고 개와 고양이말고 다른 값도 입력되어 있다면 고양이만 맨 위로 정렬하는 방법이 있을지 찾아보았다.

order by에 field()를 사용하면 원하는 순서대로 정렬을 할 수 있다고 한다. 

field 의 괄호 안에는 해당 column 이 가지고 있는 값을 모두 입력시켜야하며,  값 입력시 대소문자는 구분하지 않아도 된다.

SELECT distinct ANIMAL_TYPE, count(ANIMAL_ID)
from ANIMAL_INS
group by ANIMAL_TYPE
order by field(ANIMAL_TYPE, 'Cat','Dog')

 

order by의 field 값에 cat 만 입력할 경우 정렬이 되지 않는다.

SELECT distinct ANIMAL_TYPE, count(ANIMAL_ID)
from ANIMAL_INS
group by ANIMAL_TYPE
order by field(ANIMAL_TYPE, 'cat')

관련글 더보기