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) 해결 접근 방법
- DISTINCT 키워드를 사용하여 중복되지 않은 이름만 선택한다.
- NULL 값을 포함하여 모든 고유한 이름의 개수를 계산한다.
- COUNT 함수와 DISTINCT를 결합하여 결과를 도출한다.
4. 코드작성
-- ANIMAL_INS 테이블에서 중복되지 않은 동물 이름의 개수를 계산하는 SQL 문
SELECT
COUNT(DISTINCT NAME) AS count -- 중복 제거된 NAME 값의 개수를 count라는 별칭으로 반환
FROM ANIMAL_INS; -- ANIMAL_INS 테이블에서 데이터 조회
코드 설명
- COUNT(DISTINCT NAME):
- NAME 열에서 중복된 값을 제거한 후, 고유한 값들의 개수를 계산한다.
- NULL은 하나의 값으로 처리된다.
- AS count:
- 결과 열의 이름을 count로 변경하여 가독성을 높인다.
- FROM ANIMAL_INS:
- 데이터를 조회할 테이블을 지정한다.
5. 코드분석
(1) SELECT와 DISTINCT
- SELECT 문은 테이블에서 데이터를 가져오며, DISTINCT는 반환된 데이터에서 중복을 제거한다.
(2) COUNT 함수와 DISTINCT의 결합
- COUNT(DISTINCT NAME)는 중복 제거 후 고유한 값들의 개수를 반환한다.
- 위 예제에서 결과값은 2이다(Sam과 Sweetie).
(3) NULL 처리
- DISTINCT는 NULL을 고유 값으로 간주하여 계산에 포함한다.
- 따라서 NULL 값이 여러 개여도 하나로 계산된다.
'SQL Kit > SUM,MAX,MIN' 카테고리의 다른 글
조건에 맞는 아이템들의 가격의 총합 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
---|---|
동물 수 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
최솟값 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
연도별 대장균 크기의 편차 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
가격이 제일 비싼 식품의 정보 출력하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |