먼저 개념적인 차이는 다음과 같다.
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 |
댓글