반응형

본 글은 책 "칼퇴족 김대리는 알고 나만 모르는 SQL 기초 편"의 정리 내용입니다.

DISTINCT 키워드는 중복되는 행을 제거하는데 사용된다. 

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;

 

반응형

+ Recent posts