관리 메뉴

물 만날 물고기

[프로그래머스/MYSQL] - (70) 고양이와 개는 몇 마리 있을까GROUP BY 본문

DB & SQL/프로그래머스

[프로그래머스/MYSQL] - (70) 고양이와 개는 몇 마리 있을까GROUP BY

Lung Fish 2023. 7. 12. 03:56

🔍 예상 검색어

더보기

# 물만날물고기

# SQL

# 고양이와 개는 몇 마리 있을까GROUP BY

# GROUP BY

# 프로그래머스

# MYSQL

# SQL 

# 코딩테스트 연습


해당 포스팅은 프로그래머스 MYSQL의 고양이와 개는 몇 마리 있을까GROUP BY 문제에 대한 풀이를 정리하였습니다.

 

 

▶ 문제

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까 | 프로그래머스 스쿨
 

프로그래머스

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

programmers.co.kr

 

▶ 내 정답 (1)

SELECT DISTINCT ANIMAL_TYPE, COUNT(*)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY CASE 
    WHEN ANIMAL_TYPE = 'CAT' THEN 0
    ELSE 1
    END;

 

▶ 내 정답 (2) - 다른 정답 보고 WHERE 절 추가

SELECT DISTINCT ANIMAL_TYPE, COUNT(*)
FROM ANIMAL_INS
WHERE ANIMAL_TYPE IN ('CAT', 'Dog')
GROUP BY ANIMAL_TYPE
ORDER BY CASE 
    WHEN ANIMAL_TYPE = 'CAT' THEN 0
    ELSE 1
    END;


▶ 다른 사람 정답 (1)

-- 코드를 입력하세요
SELECT animal_type, count(*) as count
from animal_ins
group by animal_type
having animal_type in ('cat', 'dog')
order by 1

 

▶ 다른 사람 정답 (2)

SELECT 
    ANIMAL_TYPE,
    COUNT(ANIMAL_ID) AS count
FROM ANIMAL_INS
WHERE ANIMAL_TYPE IN ('Cat', 'Dog')
GROUP BY ANIMAL_TYPE
ORDER BY FIELD(ANIMAL_TYPE, 'Cat', 'Dog');

 

▶ 총평

이번 문제에서는 "동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요." 라고 되어 있는데, 일단 문제가 주어지면 조건을 쓰지 않더라도 결과를 예상해서 코드를 생략하지 말고, 무조건 조건은 쿼리에 다 표시되도록 해야 겠다는 생각으로 작성하고 있는데,

 

카테고리에 고양이와 개만 있다고 가정할 수는 없으니까 WHERE절에 IN ('Cat', 'Dog')를 사용해서 조건을 정리해 주는게 필요하고, 그 이후에 ORDER BY에서도 CASE 문을 사용해서 노골적으로 CAT이 먼저 출력되도록 작성하였다. 

 

근데 ORDER BY 조건을 줄 때 CASE 구문 말고 FIELD 함수 사용이 가능하다는 것을 다른 분 정답을 통해서 알 수 있었다. 

 

 

▼ 참고자료

No. 내용 비고
1 my sql 답 | 프로그래머스 스쿨 haaaneeulll@gmail.com
2023.5.26 14:02
2 정답으로 제출한 쿼리문 공유합니다! | 프로그래머스 스쿨 Lee Yongseung
2022.12.10 20:55
3 - -
4 - -
5 - -

▼ 복습/히스토리

더보기
No. 복습일 비고
1    
2    
3    
4    
5    

- 작성코드

--