본 글은 책 "칼퇴족 김대리는 알고 나만 모르는 SQL 기초 편"의 정리 내용입니다.
DISTINCT 키워드는 중복되는 행을 제거하는데 사용된다.
예제
인사고과 테이블: EMP
- Primary Key는 ID 열
ID | POSITION | PARTY_NM | MANAGER_ID | TEAM_NM | GRADE |
210 | 차장 | 문보미 | 3914 | 인사팀 | 3 |
345 | 대리 | 오윤경 | 1270 | 마케팅부 | 2 |
347 | 차장 | 정호천 | 3942 | 기획팀 | 3 |
540 | 과장 | 장성수 | 3221 | 리스크부 | 2 |
650 | 대리 | 이재훈 | 1270 | 마케팅부 | 1 |
711 | 과장 | 이재중 | 3914 | 인사팀 | 2 |
970 | 부장 | 김영성 | 3221 | 리스크부 | 2 |
CREATE TABLE EMP
(
ID INT NOT NULL,
POSITION CHAR(20) NOT NULL,
PARTY_NM CHAR(20) NOT NULL,
MANAGER_ID INT NOT NULL,
TEAM_NM CHAR(20) NOT NULL,
GRADE INT NOT NULL,
PRIMARY KEY('ID')
);
INSERT INTO EMP
VALUES
(210, '차장', '문보미', 3914, '인사팀', 3),
(345, '대리', '오윤경', 1270, '마케팅부', 2),
(347, '차장', '정호천', 3942, '기획팀', 3),
(540, '과장', '장성수', 3221, '리스크부', 2),
(650, '대리', '이재훈', 1270, '마케팅부', 1),
(711, '과장', '이재중', 3914, '인사팀', 2),
(970, '부장', '김영성', 3221, '리스크부', 2);
EMP 테이블에 어떤 직급들이 있는지 확인하기 위해서 POSITION 열을 출력
SELECT POSITION FROM EMP;
POSITION |
차장 |
대리 |
차장 |
과장 |
대리 |
과장 |
부장 |
- 중복되는 값들도 모두 출력됨 (차장 2번, 대리 2번, 과장 2번)
- 중복 값은 하나만 출력하여 어떤 종류의 변수들이 있는지 확인하기 위해서는 DISTINCT 키워드를 사용
SELECT DISTINCT POSITION FROM EMP;
POSITION |
차장 |
대리 |
과장 |
부장 |
직급 별 인사 고과(GRADE) 확인
- DISTINCT 키워드 뒤에 2개 이상의 열을 나열하면 2개 이상의 열이 하나의 레코드로 인식하여 중복된 값을 제거
SELECT DISTINCT POSITION, GRADE FROM EMP;
POSITION | GRADE |
차장 | 3 |
대리 | 2 |
과장 | 2 |
대리 | 1 |
부장 | 2 |
DISTINCT 키워드를 사용하지 않으면?
SELECT POSITION, GRADE FROM EMP;
POSITION | GRADE |
차장 | 3 |
대리 | 2 |
차장 | 3 |
과장 | 2 |
대리 | 1 |
과장 | 2 |
부장 | 2 |
- POSITION이 ‘차장’이면서 GRADE가 ‘3’인 경우가 두 번 출력 됨
참고로 DISTINCT 키워드의 반대는 ALL이고 SQL에서는 ALL이 기본 값이다.
SELECT ALL POSITION FROM EMP;
= SELECT POSITION FROM EMP;
'SQL' 카테고리의 다른 글
[SQL] WHERE 조건절을 이용해 데이터 추출하기 (0) | 2022.02.08 |
---|---|
[SQL] 열이름 변경해서 출력하기 (AS) (0) | 2022.02.08 |
[SQL] 데이터 정렬하기 (ORDER BY) (0) | 2022.01.20 |
[SQL] 데이터 가져오기 (SELECT) (0) | 2022.01.15 |
[SQL] SQL의 개요 (0) | 2022.01.12 |