꾸물꾸물 졔의 개발공부

[MySQL] 프로그래머스 - 고양이와 개는 몇 마리 있을까 (GROUP BY~HAVING, String) 본문

알고리즘/SQL

[MySQL] 프로그래머스 - 고양이와 개는 몇 마리 있을까 (GROUP BY~HAVING, String)

체제 2023. 4. 22. 22:52

https://school.programmers.co.kr/learn/courses/30/lessons/59040

 

 

프로그래머스

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

programmers.co.kr

 

 

문제

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


 

구현 과정

  • ANIMAL_TYPE 별로 그룹화하여, 고양이와 개인 그룹 찾기 
  • 고양이, 개 각각의 데이터 갯수 (=몇마리) COUNT 하기 
  • 고양이 Cat을 개 Dog보다 먼저 출력하기 위해 ANIMAL_TYPE 오름차순 정렬 

 

1️⃣ ANIMAL_TYPE별로 그룹화하여 고양이, 개인 그룹만 추출하기 

GROUP BY 연산자로 그룹을 만들고, HAVING 절로 조건을 추가하여 조건에 부합하는 그룹만 출력한다. ANIMAL_TYPE이 'Cat' OR 'Dog'인 그룹을 찾는다. String 비교를 위해 = 연산자를 활용한다. 

GROUP BY ANIMAL_TYPE 
HAVING ANIMAL_TYPE ='Cat' OR ANIMAL_TYPE ='Dog'

 

2️⃣ 고양이, 개 각각의 데이터 갯수 COUNT 

1번 과정에서 그룹화하여 고양이와 개 그룹을 찾아내었다. 각각 몇마리인지 세기 위해 그룹함수 COUNT() 를 사용하여 데이터가 몇개인지 센다. 

 

3️⃣ ANIMAL_TYPE 오름차순 정렬 

Cat 이 Dog 보다 사전순으로 앞서 있으므로 오름차순 정렬하면 고양이를 먼저 조회할 수 있다. ORDER BY 연산자 이용, 기본값 오름차순 (ASC) 

ORDER BY ANIMAL_TYPE

 

✔️코드

SELECT ANIMAL_TYPE, COUNT(*)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE 
HAVING ANIMAL_TYPE = 'Cat' OR ANIMAL_TYPE = 'Dog'
ORDER BY ANIMAL_TYPE;