반응형
사이트명 : 프로그래머스(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
반응형
'SQL > 문제풀이' 카테고리의 다른 글
프로그래머스 없어진 기록 찾기 풀이(MySQL) (0) | 2019.09.06 |
---|---|
프로그래머스 동명 동물 수 찾기 풀이(MySQL) (0) | 2019.09.05 |
프로그래머스 이름이 없는 동물의 아이디 풀이(MySQL) (0) | 2019.09.04 |
프로그래머스 최솟값 구하기 풀이(MySQL) (0) | 2019.09.04 |
프로그래머스 어린 동물 찾기 풀이(MySQL) (0) | 2019.09.03 |
댓글