Secret Poten

#17.SELECT 기초 &4 : DISTINCT 본문

오라클 데이터베이스[11gR2](#1~

#17.SELECT 기초 &4 : DISTINCT

potentail 2017. 12. 17. 12:33

이번 포스팅은 SELECT를 사용하였을때 쿼리결과에 중복값을 없애기 위해 사용하는 구문인

DISTINCT에 대하여 알아보겠습니다.


DISTINCT를 잘쓰면 쿼리결과를 좀 더 깔끔하게 표기할 수 있겠죠.



DISTINCT의 사전적 의미를 검색하면...

뚜렷한, 분명한 등으로 검색이 되는데요 그냥 간결하게 중복을 제거 했기 때문에 저런 단어를 썻지 않을까 합니다.


그러면 바로 쿼리를 실행하여 결과를 보도록 하죠.


사용할 계정은 scott입니다.


  • SELECT DISTINCT * FROM emp


위 명령어를 쳤을시 아무런 변화가 일어나지 않습니다.


DISTINCT를 제대로 쓸려면 중복값을 배제할 컬럼명을 정확하게 명기하여야 하죠.

즉 14건의 레코드 모두 중복값이 없기때문에 아무련 변화가 없는것 처럼 보입니다.


deptno가 10,20,30으로 겹치는것이 많지만 각각 empno의 번호가 다르고, ename이 다르기때문에 DISTINCT가 안쓰여진것처럼 출력이 됩니다.


그러면 deptno만 DISTINCT를 걸면 어떻게 될까요?


  • SELECT DISTINCT deptno FROM emp;


deptno만 걸어서 쿼리 했을시 10,20,30 값이 중복되는것이 있기 때문에

대표값만 둔채로 나머지는 출력이 되지 않습니다.


즉 DISTINCT를 쓸려면 쿼리할 컬럼에 주의를 하여

무슨 컬럼의 중복을 배제할지, 어떤 결과값을 원하는지를 정확하게 파악하여야 합니다.


  • SELECT DISTINCT deptno,comm FROM emp;


위 쿼리문을 실행했을시

30번 부서의 커미션에 중복값을 각각 제거하고

20번 부서의 중복값,마지막으로 10번부서의 중복값을 제거합니다.


이처럼 중복값을 제거하고 보고싶을때는 DISTINCT를 잘 활용하면 됩니다.

(깔끔하게 정렬하고 싶다면 ORDER BY 구문을 사용하시는것이 좋습니다)


(Youtube) Secret Poten : http://goo.gl/ENeBOR

(Youtube) Secret Poten AE : http://goo.gl/qasbWH


그외 궁금한점은

공지사항을 잘보시고 오픈채팅으로 물어봐주시면 감사하겠습니다

공지사항 바로가기


-HardWare SetUp-

CPU : Intel i7-6700k(OC)

RAM : Samsung DDR4 8GB X 4 (32GB)

HDD : Seagate 1TB X 3 (3TB HDD), Seagate 4TB =Total 7TB

SSD : SanDisk SSD 256GB

VGA : Asus GTX1080 8GB(OC)

MB : Asus Z170-A STCOM

Case : Thermaltake Core X9

PSU : Micronics Performance II HV 850W Bronze

ODD : LG BH16NS55 (Blu-ray ODD)

Other : PSIONIC Custom Water Cooler (CPU set), LED Cooler (EA 8), Scarlett 6i6, MXL990





Comments