728x90
반응형
SMALL
📌 문제 정보
- 출처: 문제 링크
- 난이도: ⭐
- 문제 유형: DISTINCT
- 사용 언어: SQL
🔍 문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
💡 풀이 노트
| 구문 | 의미 |
| `COUNT(*)` | 전체 행 수 (NULL 포함 여부 상관 없음) |
| `COUNT(NAME)` | `NAME` 컬럼이 NULL이 아닌 행 수 |
| `COUNT(DISTINCT(NAME))` | 중복되지 않는 `NAME` 값의 개수만 계산 |
1. DISTINCT 개념
- `DISTINCT`는 중복된 값을 제거하고 고유한 값만 추출할 때 사용하는 키워드
- SELECT 절에서만 사용 가능하며, GROUP BY 없이도 중복 제거가 가능
SELECT DISTINCT 컬럼명
FROM 테이블명;
2. 주의사항
- `DISTINCT`는 SELECT 절의 여러 컬럼과 함께 사용할 수 있음
- 이 경우 전체 컬럼 조합이 중복 여부 판단 기준이 됨
SELECT DISTINCT(NAME, DATETIME)
FROM ANIMAL_INS;
🚀 코드 (Java)
SELECT COUNT(DISTINCT(NAME)) AS COUNT
FROM ANIMAL_INS
🖥 실행 결과
출력
COUNT
96
📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest
728x90
반응형
LIST