DISTINCT와 GROUP BY는 모두 SQL에서 중복 데이터를 처리하거나 그룹화된 데이터를 가져올 때 사용되지만,
그 목적과 동작 방식에는 중요한 차이가 있습니다.
DISTINCT는 중복된 결과를 제거하고 고유한 값을 반환하는 데 사용됩니다.
예시 1: 특정 열에서 고유한 값
SELECT DISTINCT column_name
FROM table_name;
예시 2: 여러 열의 조합에서 고유한 값
SELECT DISTINCT column1, column2
FROM table_name;
결과:
| column1 | column2 |
| A | 1 |
| A | 2 |
| B | 1 |
GROUP BY는 데이터를 특정 열을 기준으로 그룹화하고, 각 그룹에 대해 집계 함수(예: SUM, COUNT, AVG 등)를 사용하여 통계 값을 계산할 때 사용됩니다.
예시 1: 기본 그룹화
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
예시 2: 다중 열 그룹화
SELECT column1, column2, SUM(column3)
FROM table_name
GROUP BY column1, column2;
결과:
| column1 | column2 | SUM(column3) |
| A | 1 | 10 |
| A | 2 | 20 |
| B | 1 | 30 |
| 특징 | DISTINCT | GROUP BY |
| 목적 | 중복된 행 제거 | 데이터를 특정 열로 그룹화 |
| 사용 맥락 | 중복된 행을 제거하고 고유한 결과 반환 | 그룹화된 데이터에 대해 집계 함수 적용 |
| 집계 함수 | 지원하지 않음 | 집계 함수(SUM, COUNT, AVG 등)와 함께 사용 |
| 출력 | 중복을 제거한 고유 행 반환 | 그룹화된 데이터에 대한 집계 결과 반환 |
| 사용 예시 | SELECT DISTINCT column_name | SELECT column_name, COUNT(*) FROM table GROUP BY column_name |
| 중복 기준 | 모든 열 또는 특정 열의 고유 조합 | 지정된 열을 기준으로 그룹화 및 집계 |
| id | category | value |
| 1 | A | 10 |
| 2 | B | 20 |
| 3 | A | 10 |
| 4 | B | 30 |
| 5 | A | 40 |
| category |
| A |
| B |
| category | SUM(value) |
| A | 60 |
| B | 50 |
DISTINCT는 고유한 category를 가져오고, GROUP BY는 category 별로 value의 합계를 계산합니다.
| 데이터베이스 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 |