본문 바로가기
SQL/문제풀이

프로그래머스 고양이와 개는 몇 마리 있을까 풀이(MySQL)

by wakestand 2019. 9. 5.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 고양이와 개는 몇 마리 있을까

SQL : MySQL

 

ANIMAL_INS 테이블에서

ANIMAL_TYPE 컬럼과 Cat, Dog 갯수를 count 컬럼으로 해서 가져와야 하는데

문제는 어떻게 가져오느냐 하는 것이다

 

내 풀이방법은 아래와 같은데

 

COUNT(컬럼)을 이용해 갯수를 구해오고 AS를 넣어 컬럼명을 COUNT로 정해준다

COUNT는 GROUP BY가 있어야 사용 가능한데

 

GROUP BY란?

컬럼 값이 같은 것 끼리 하나로 묶어준다는 거다

ANIMAL_TYPE으로 묶어놓으니

 

Cat과 Dog이 몇마린지 정리된 것이 보인다

 

마지막으로 프로그래머스에서 바로 사용 가능한 답안 코드는 아래와 같다

 

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE

 

2019/09/06 수정

 

해당 문제에서 고양이가 먼저 나오게 ORDER BY를 걸지 않아도

문제가 정답으로 나오는 현상이 있는데

 

원래 조회 시 고양이는 C고 개는 D라 고양이가 먼저 나와서 맞게 되는 것이다

 

그래도 문제의 취지에 맞춰 ORDER BY 시 고양이가 먼저, 개가 나중에 나오게 하려면

CASE를 이용해서 ORDER BY에 추가해주면 되는데

쿼리는 아래와 같다

 

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY
CASE ANIMAL_TYPE
	WHEN 'Cat' THEN 1
	WHEN 'Dog' THEN 2
	ELSE 3
END
반응형

댓글