본문 바로가기

SQL Kit/GROUP BY

고양이와 개는 몇 마리 있을까 [ 프로그래머스 | SQL Kit | Level 2 ]

1. 문제 목적

GROUP BY와 COUNT를 활용하여 특정 조건에 따라 데이터를 그룹화하고 집계하는 방법을 학습하는 것이다.


2. 핵심 개념

GROUP BY

  • 정의: 데이터를 특정 열 값을 기준으로 그룹화하여 각 그룹별로 요약 결과를 반환한다.
SELECT 열1, COUNT(*)
FROM 테이블명
GROUP BY 열1;

  • 주요 특징:결과는 그룹화된 열과 집계된 결과만 반환한다.
  • GROUP BY는 반드시 집계 함수(COUNT, SUM 등)와 함께 사용된다.

COUNT 함수

  • 정의: 특정 열 또는 레코드의 개수를 계산하는 함수.
SELECT COUNT(*)
FROM 테이블명;
  • 주요 특징:COUNT(열 이름): NULL이 아닌 값만 카운트.
  • COUNT(*): 모든 레코드를 계산.

2.3 ORDER BY

  • 정의: 결과를 특정 열을 기준으로 정렬.
  • 사용 방법:내림차순 정렬은 DESC를 명시.
  • ORDER BY 열1 ASC, 열2 DESC;
  • 오름차순 정렬이 기본.

3. 문제 해결 절차

  1. 데이터 분석:
    • ANIMAL_TYPE 열을 기준으로 데이터를 그룹화해야 한다.
    • 각 그룹별로 고양이(Cat)와 개(Dog)의 개수를 집계한다.
  2. 필터링 조건 설정:
    • 데이터의 필터링 조건은 없으며, 모든 데이터를 그룹화에 포함한다.
  3. 그룹화 및 집계:
    • GROUP BY를 사용하여 ANIMAL_TYPE으로 데이터를 그룹화.
    • COUNT 함수를 사용하여 각 그룹별 레코드 수를 계산.
  4. 정렬 조건 추가:
    • 문제 요구사항에는 정렬 조건이 없으므로 기본 순서대로 반환.
  5. SQL 작성 및 실행:
    • 모든 요구 조건을 반영한 SQL 작성 및 테스트.

4. 코드 작성

-- 고양이와 개는 몇 마리 있을까?
SELECT
    ANIMAL_TYPE AS '동물유형',  -- 동물 유형(Cat, Dog)을 표시
    COUNT(*) AS '개수'         -- 각 동물 유형별 개수를 집계
FROM
    ANIMAL_INS                 -- 대상 테이블
GROUP BY
    ANIMAL_TYPE                -- 동물 유형별로 그룹화
ORDER BY
    ANIMAL_TYPE ASC;           -- 동물 유형 오름차순 정렬

5. 코드 분석

SELECT 절

  • ANIMAL_TYPE AS '동물유형':AS를 사용해 결과 열의 이름을 '동물유형'으로 지정.
  • 동물 유형(고양이, 개)을 반환.
  • COUNT(*) AS '개수':AS를 사용해 결과 열의 이름을 '개수'로 지정.
  • 각 동물 유형별 레코드 수를 계산.

FROM 절

  • ANIMAL_INS:
    • 동물 보호소에 들어온 동물 데이터를 포함하는 테이블.

GROUP BY 절

  • ANIMAL_TYPE:그룹화된 각 동물 유형별로 COUNT 함수가 적용됨.
  • 동물 유형을 기준으로 데이터를 그룹화.

ORDER BY 절

  • ANIMAL_TYPE ASC:
  • 결과를 동물 유형 기준 오름차순으로 정렬.