SQL 기초 정리
DISTINCT vs GROUP BY – 결과는 같아도 목적은 다르다
heoncode
2025. 4. 11. 11:20
728x90
반응형
SMALL
SQL에서 중복된 값을 제거하기 위해 DISTINCT
를 사용하고, 데이터를 그룹화하기 위해 GROUP BY
를 사용합니다. 하지만 때로는 두 문장이 같은 결과를 반환하기도 하여, 어떤 걸 써야 할지 혼란스러울 수 있습니다. 이 글에서는 두 구문의 차이를 명확하게 정리합니다.
DISTINCT: 단순히 중복된 행을 제거
DISTINCT
는 SELECT 절에서 중복된 행을 제거하는 용도로 사용됩니다. 특정 컬럼 또는 여러 컬럼 조합이 중복일 경우, 하나만 남기고 제거합니다.
예시:
SELECT DISTINCT dept_id
FROM employees;
→ 부서 ID가 중복되는 경우 하나만 표시됩니다.
여러 컬럼을 기준으로도 중복 제거가 가능합니다:
SELECT DISTINCT dept_id, job
FROM employees;
→ 부서 ID와 직책 조합이 동일한 경우, 하나만 남깁니다.
GROUP BY: 데이터를 그룹으로 묶은 후 집계
GROUP BY
는 데이터를 그룹화한 뒤, 집계 함수(SUM, COUNT 등)를 함께 사용할 때 주로 사용됩니다. 단순히 중복 제거가 목적이라면 DISTINCT
가 더 적절하지만, 그룹별 통계가 필요하다면 GROUP BY
를 사용해야 합니다.
예시:
SELECT dept_id, COUNT(*)
FROM employees
GROUP BY dept_id;
→ 부서별로 몇 명의 직원이 있는지를 보여줍니다.
만약 집계 함수 없이 GROUP BY
만 사용한다면 DISTINCT
와 유사한 결과가 나오지만, 문장의 의미는 다릅니다.
예시:
SELECT dept_id
FROM employees
GROUP BY dept_id;
→ SELECT DISTINCT dept_id FROM employees;
와 결과는 같지만, 의미상 그룹화입니다.
정리
목적 | 사용 구문 |
---|---|
단순 중복 제거 | DISTINCT |
집계 또는 그룹 통계 | GROUP BY |
실무 팁: 결과만 보고 두 문장을 혼동하면 안 됩니다. 왜 이 구문을 쓰는지, 목적에 따라 구문을 선택하세요.
#SQL #DISTINCT #GROUPBY #중복제거 #집계함수 #기초정리 #실무팁 #데이터분석
728x90
반응형
LIST