300x250
DISTINCT와 GROUP BY는 모두 SQL에서 중복 데이터를 처리하거나 그룹화된 데이터를 가져올 때 사용되지만,
그 목적과 동작 방식에는 중요한 차이가 있습니다.
1. DISTINCT
목적:
DISTINCT는 중복된 결과를 제거하고 고유한 값을 반환하는 데 사용됩니다.
동작 방식:
- 행 전체 또는 특정 열에 대해 중복된 값을 제거하고, 고유한 결과 집합을 반환합니다.
- DISTINCT는 반환된 모든 열의 조합을 고려하여 중복 여부를 판단합니다.
사용 예시:
예시 1: 특정 열에서 고유한 값
SELECT DISTINCT column_name
FROM table_name;
- column_name에 있는 고유한 값들만 반환합니다.
예시 2: 여러 열의 조합에서 고유한 값
SELECT DISTINCT column1, column2
FROM table_name;
- column1과 column2의 조합이 고유한 행들만 반환합니다.
결과:
column1 | column2 |
A | 1 |
A | 2 |
B | 1 |
2. GROUP BY
목적:
GROUP BY는 데이터를 특정 열을 기준으로 그룹화하고, 각 그룹에 대해 집계 함수(예: SUM, COUNT, AVG 등)를 사용하여 통계 값을 계산할 때 사용됩니다.
동작 방식:
- 데이터를 하나 이상의 열을 기준으로 그룹화한 후, 각 그룹에 대해 집계 작업을 수행합니다.
- GROUP BY는 집계 함수와 함께 자주 사용됩니다.
사용 예시:
예시 1: 기본 그룹화
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
- column_name을 기준으로 데이터를 그룹화하고, 각 그룹의 행 수를 계산합니다.
예시 2: 다중 열 그룹화
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY column1, column2;
- column1과 column2의 조합으로 그룹화하고, 각 그룹의 column3 합계를 계산합니다.
결과:
column1 | column2 | SUM(column3) |
A | 1 | 10 |
A | 2 | 20 |
B | 1 | 30 |
3. 차이점 요약
특징 | DISTINCT | GROUP BY |
목적 | 중복된 행 제거 | 데이터를 특정 열로 그룹화 |
사용 맥락 | 중복된 행을 제거하고 고유한 결과 반환 | 그룹화된 데이터에 대해 집계 함수 적용 |
집계 함수 | 지원하지 않음 | 집계 함수(SUM, COUNT, AVG 등)와 함께 사용 |
출력 | 중복을 제거한 고유 행 반환 | 그룹화된 데이터에 대한 집계 결과 반환 |
사용 예시 | SELECT DISTINCT column_name | SELECT column_name, COUNT(*) FROM table GROUP BY column_name |
중복 기준 | 모든 열 또는 특정 열의 고유 조합 | 지정된 열을 기준으로 그룹화 및 집계 |
4. 언제 사용해야 하나?
- DISTINCT:
- 고유한 값들을 추출하고자 할 때.
- 중복된 데이터를 제거한 고유 행을 반환하고자 할 때.
- GROUP BY:
- 특정 기준으로 데이터를 그룹화하고, 그룹별로 집계 함수(SUM, COUNT, AVG, 등)를 사용하여 통계를 내고자 할 때.
- 데이터의 요약 정보(예: 총합, 평균, 개수 등)를 그룹별로 계산하고자 할 때.
예시 비교
예시 테이블:
id | category | value |
1 | A | 10 |
2 | B | 20 |
3 | A | 10 |
4 | B | 30 |
5 | A | 40 |
- DISTINCT 사용:결과:
category A B -
SELECT DISTINCT category FROM example_table;
- GROUP BY 사용:결과:
category SUM(value) A 60 B 50 -
SELECT category, SUM(value) FROM example_table GROUP BY category;
DISTINCT는 고유한 category를 가져오고, GROUP BY는 category 별로 value의 합계를 계산합니다.
300x250
'IT > DB' 카테고리의 다른 글
데이터베이스 sql 월별 평균 건수 조회 쿼리 AVG 함수 (0) | 2024.11.17 |
---|---|
큐브리드 sql replace 공백 구분탭 추가하는 방법 CHAR(9) (1) | 2024.11.14 |
데이터베이스 with 쿼리 CTE 쿼리 사용하는 방법 (0) | 2024.11.11 |
SET GLOBAL WAIT_TIMEOUT 시간 설정 (0) | 2024.11.07 |
데이터베이스 SQL decode 함수 쓰는 방법 (3) | 2024.11.06 |