본문 바로가기

SQL Kit/SUM,MAX,MIN

중복 제거하기 [ 프로그래머스 | SQL Kit | Level 2 ]

1. 문제목적

DISTINCT 키워드를 활용하여 데이터 중복을 제거하는 방법을 학습하는 데 있다.


2. 핵심개념

DISTINCT 키워드

  • 정의: SELECT 문에서 반환되는 결과에서 중복된 값을 제거한다.
SELECT DISTINCT column_name FROM table_name;

여러 열에서 중복 제거 시:

SELECT DISTINCT column1, column2 FROM table_name;

COUNT 함수와 DISTINCT의 결합

  • COUNT 함수는 결과값의 개수를 계산하며, DISTINCT와 함께 사용하면 중복을 제거한 값들의 개수를 계산한다.
SELECT COUNT(DISTINCT column_name) FROM table_name;

NULL 처리

  • DISTINCT는 기본적으로 NULL 값을 하나의 값으로 간주한다. 따라서 NULL은 중복 제거 시 중복되지 않은 하나의 값으로 처리된다.

3. 문제해결 절차

(1) 문제 분석

  • 테이블 ANIMAL_INS에서 동물의 이름이 중복되지 않도록 필터링해야 한다.
  • NULL 값을 가진 이름은 중복 제거에서 제외하지 않고, 고유하게 처리한다.
  • 중복 제거 후 이름의 개수를 계산해야 한다.

(2) 해결 접근 방법

  1. DISTINCT 키워드를 사용하여 중복되지 않은 이름만 선택한다.
  2. NULL 값을 포함하여 모든 고유한 이름의 개수를 계산한다.
  3. COUNT 함수와 DISTINCT를 결합하여 결과를 도출한다.

4. 코드작성

-- ANIMAL_INS 테이블에서 중복되지 않은 동물 이름의 개수를 계산하는 SQL 문
SELECT
    COUNT(DISTINCT NAME) AS count -- 중복 제거된 NAME 값의 개수를 count라는 별칭으로 반환
FROM ANIMAL_INS;                 -- ANIMAL_INS 테이블에서 데이터 조회

코드 설명

  1. COUNT(DISTINCT NAME):
    • NAME 열에서 중복된 값을 제거한 후, 고유한 값들의 개수를 계산한다.
    • NULL은 하나의 값으로 처리된다.
  2. AS count:
    • 결과 열의 이름을 count로 변경하여 가독성을 높인다.
  3. FROM ANIMAL_INS:
    • 데이터를 조회할 테이블을 지정한다.

5. 코드분석

(1) SELECT와 DISTINCT

  • SELECT 문은 테이블에서 데이터를 가져오며, DISTINCT는 반환된 데이터에서 중복을 제거한다.

(2) COUNT 함수와 DISTINCT의 결합

  • COUNT(DISTINCT NAME)는 중복 제거 후 고유한 값들의 개수를 반환한다.
  • 위 예제에서 결과값은 2이다(Sam과 Sweetie).

(3) NULL 처리

  • DISTINCT는 NULL을 고유 값으로 간주하여 계산에 포함한다.
  • 따라서 NULL 값이 여러 개여도 하나로 계산된다.