
📑 문제설명


⭐ 정답코드 (MySQL)
MySQL이랑 Oracle 모두 지원하는 문제인데 나는 MySQL로 풀었다.
SELECT ANIMAL_TYPE, COUNT(*)AS count
FROM animal_ins
WHERE animal_type IN ('Cat', 'Dog')
GROUP BY animal_type
ORDER BY FIELD(animal_type, 'Cat', 'Dog');
- WHERE ANIMAL_TYPE IN ('Cat', 'Dog')
→ 고양이와 개만 필터링 - GROUP BY ANIMAL_TYPE
→ 종류별로 묶어서 마릿수 집계 - ORDER BY FIELD(ANIMAL_TYPE, 'Cat', 'Dog')
→ FIELD() 함수로 커스텀 정렬
다른 부분은 어려운 게 없지만, 개와 고양이 순으로 정렬하는 부분이 생소하다.
MySQL에서는 ORDER BY FIELD() 함수로 명시적으로 정렬 우선순위를 지정한다.
FIELD() 함수
- MySQL에서만 사용 가능
- ORDER BY 에서만 사용 가능 (정렬 순서 지정용)
- 문자열, 숫자 모두 가능
- 일반적인 알파벳순/숫자순이 아니라 원하는 순서대로 정렬할 때 유용하다.
ORDER BY FIELD(컬럼명, '값1', '값2', '값3', ...)
- 값1 → 우선순위 1
- 값2 → 우선순위 2
- 값3 → 우선순위 3목록에 없는 값 → 0 (가장 먼저 또는 가장 나중 depending on ASC/DESC)
ORDER BY CASE ANIMAL_TYPE
WHEN 'Cat' THEN 1
WHEN 'Dog' THEN 2
END'코딩테스트 > SQL테스트' 카테고리의 다른 글
| [프로그래머스] (MySQL) 조건에 맞는 사원정보 조회하기 (5) | 2025.08.09 |
|---|---|
| [프로그래머스] (MySQL) 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (6) | 2025.08.09 |
| [프로그래머스] (MySQL) 진료과별 총 예약횟수 조회하기 (8) | 2025.08.07 |
| [프로그래머스] (MySQL) 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (4) | 2025.05.19 |
| [프로그래머스] (MySQL) 오랜 기간 보호한 동물(1) (2) | 2025.05.19 |