본문 바로가기
프로젝트(종료)/SQLD 자격증 따기

DISTINCT와 GROUP BY의 차이

by 일말고프로젝트 2021. 3. 9.

먼저 개념적인 차이는 다음과 같다.

 

DISTINCT = 컬럼 내 데이터를 중복을 제거해 조회한다.
GROUP BY = 컬럼 내 데이터를 Unique한 값을 기준으로 그 결과를 가져온다.

 

두 작업은 기능적으로는 약간의 차이가 있지만, 동일한 형태의 작업이다. 

쉽게 생각해서, DISTICNT는 그룹핑만, GROUP BY는 그룹핑 + 정렬의 과정이다. 때문에 연산 속도도 DISTINCT가 더 빠르며 같은 그룹핑 작업을 진행하므로 두 연산을 동시에 할 수 없기도 하다.

 

SELECT DISTINCT C1 FROM TEMP;

SELECT DISTINCT C1, C2 FROM TEMP;

SELECT C1 FROM TEMP GROUP BY C1;

SELECT C1, C2 FROM TEMP GROUP BY C1, C2;

 

때문에 위 네 가지 쿼리는 (1,3), (2,4)가 각각 같은 결과를 보인다.

 

또한

 

SELECT COUNT(DISTINCT C1) FROM TEMP;

SELECT C1, COUNT(C1) FROM TEMP GROUP BY C1;

 

위 두 쿼리의 결과는 다르고, 이 둘은 각각 DISTINCT와 GROUP BY의 고유한 기능이다. DISTINCT와 다르게 GROUP BY는 고유값을 기준으로 각각의 연산 결과를 가져올 수 있다.

'프로젝트(종료) > SQLD 자격증 따기' 카테고리의 다른 글

NULL의 속성과 특징  (0) 2021.03.10
여러가지 COUNT() 쓰임새  (0) 2021.03.09
DELETE와 TRUNCATE와 DROP 표로 이해하기  (0) 2021.03.08
PK와 FK  (0) 2021.03.04
DML, DDL, DCL, TCL에 대해  (0) 2021.03.03

댓글