SQL을 사용하다 보면 데이터를 그룹화하거나 정렬해야 하는 상황이 자주 발생합니다. 이때 많은 초보자들이 GROUP BY와 ORDER BY의 차이를 혼동하곤 하는데요. 이 글에서는 두 절의 개념과 주요 차이점을 명확하게 정리해 드립니다.
GROUP BY란?
GROUP BY는 동일한 값을 가진 행(row)들을 하나의 그룹으로 묶어주는 절입니다. 주로 집계 함수(COUNT, SUM, AVG 등)와 함께 사용되며, 그룹 단위로 통계를 낼 때 필수적입니다.
- 동일한 값을 가진 행들을 그룹으로 묶습니다.
- CREATE VIEW 문에서도 사용할 수 있습니다.
- SELECT 문에서는 반드시 'ORDER BY' 키워드보다 먼저 작성해야 합니다.
- 속성(attribute)이 집계 함수 안에 포함된 경우에는 GROUP BY 절에 사용할 수 없습니다.
- 튜플(행)들의 속성 값 유사성을 기준으로 그룹화가 이루어집니다.
- 행(tuple)의 표현 방식을 제어합니다.
ORDER BY란?
ORDER BY는 조회된 결과 집합(result set)을 특정 열을 기준으로 오름차순 또는 내림차순으로 정렬하는 절입니다. 데이터를 원하는 순서대로 출력할 때 사용됩니다.
- CREATE VIEW 문에서는 사용할 수 없습니다.
- 결과 집합을 오름차순(ASC) 또는 내림차순(DESC)으로 정렬합니다.
- 'GROUP BY' 키워드 뒤에 위치합니다.
- 집계 함수가 적용된 속성도 정렬 기준으로 사용할 수 있습니다.
- 열(column)의 표현 방식을 제어합니다.
GROUP BY와 ORDER BY 함께 사용하기
두 절은 하나의 쿼리에서 함께 사용할 수 있으며, 이때 작성 순서는 다음과 같습니다.
SELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2 ORDER BY column1, column2
핵심 요약
| 구분 | GROUP BY | ORDER BY |
|---|---|---|
| 목적 | 데이터 그룹화 | 데이터 정렬 |
| 정렬 방식 | 값의 유사성 기준 | 오름차순/내림차순 |
| CREATE VIEW 사용 | 가능 | 불가능 |
| 집계 함수 적용 속성 | 사용 불가 | 사용 가능 |
| 작성 위치 | ORDER BY 앞 | GROUP BY 뒤 |
정리하면, GROUP BY는 데이터를 그룹으로 묶는 역할, ORDER BY는 결과를 원하는 순서로 정렬하는 역할을 합니다. 두 절의 실행 순서와 용도를 정확히 이해하면 더욱 효율적인 SQL 쿼리를 작성할 수 있습니다.