ToBe끝판왕

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

■ 프로그래밍 SKILLS/SQL

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

업그레이드중 2022. 6. 11. 20:46
반응형

 


 

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

 

Programmers의 SQL 고득점 Kit

GROUP BY 문제

 

 

 해당 문제 링

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

 

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 


 

정답 및 풀이

 

▶  GROUP BY 절

•  데이터들을 원하는 그룹으로 나눌 수 있다.

•  나누고자 하는 그룹의 컬럼명을 SELECT절과 GROPU BY절 뒤에 추가하면 된다.

•  FROM절과 WHERE절 뒤에 온다.

•  집계함수와 함께 사용되는 상수는 GROUP BY절에 추가하지 않아도 된다.

 

•  GROUP BY 절

SELECT 컬럼명, 그룹함수
FROM 테이블명
GROUP BY 그룹대상;

 

 

▶  HAVING 절

•  GROUP BY절을 통해 그룹을 짓고, 각 그룹에 조건을 부여할 때 사용한다.

•  GROUP BY 절 다음에 위치한다.

 

•  HAVING 절

SELECT 컬렴명, 그룹함수
FROM 테이블명
GROUP BY 그룹대상
HAVING 그룹함수 포함 조건;

 

 

※ WHERE 절과 HAVING 절 차이

•  WHERE 절은 모든 개별 행에 조건을 줄 수 있다 하지만 HAVING절은 GROUP BY된 이후 특정한 그룹의

   행에만 조건을 줄 수 있다.

•  집계함수는 HAVING절과 함께 사용할 수 있지만 WHERE절은 HAVE절에 포함된 하위 쿼리에 있지 않으면

    집계함수랑 함께 사용할 수 없다.

•  HAVING절은 GROUP BY 절 뒤에 사용하고 WHERE절은 앞에 사용한다

 

 

※ 집계함수

 

 

▶  정답

•  ANIMAL_TYPE을 조회하면서 몇마리인지 데이터의 개수를 요구하므로 COUNT함수를 같이 사용한다.

•  결과가 고양이( CAT ) , 개( DOG )로 묶어서 나오므로 GROUP BY 절을 사용한다.

•  고양이( CAT ) 을 개( DOG )보다 먼저 나오게 정렬을 해야하므로 ORDER BY절을 함께 사용한다.

   ( 문자 데이터 타입의 경우 ORDER BY를 사용하면 알파벳 순서대로 나오게 된다. )

SELECT ANIMAL_TYPE, COUNT( ANIMAL_TYPE )
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANMIAL_TYPE;

 

 

 

반응형
Comments