개발 기록/ORACLE
[오라클] GROUP BY와 OVER 함수, 차이점과 사용 기준 한눈에 보기
추리덕후 남도일
2025. 3. 24. 22:38
프로젝트를 하면서 GROUP BY와 OVER를 쓰는 사수를 보면서 문득 저 두 개의 차이는 도대체 무엇일까?
라는 의문이 생겨서 작성하게 되었다.
바로 본론으로 가보자
- GROUP BY
- OVER
- GROUP BY와 OVER의 차이점
- GROUP BY와 OVER 사용 기준
1. GROUP BY
✅ GROUP BY이란??
GROUP BY는 데이터를 특정 기준으로 그룹화하여 요약된 결과를 보기 위해 사용하는 SQL 구문이다.
여러 행의 데이터를 하나의 그룹으로 묶어서 합계, 평균, 개수 등 요약 정보를 얻고 싶을 때 쓰는 것!
SELECT 컬럼1, 집계함수(컬럼2)
FROM 테이블이름
GROUP BY 컬럼1;
2. OVER
✅ OVER 이란??
OVER 절은 데이터에서 특정 순서나 그룹을 정해서 집계하거나 분석할 때 사용하는 기능이다.
함수(컬럼명) OVER (PARTITION BY 기준컬럼 ORDER BY 정렬컬럼)
3. GROUP BY와 OVER의 차이점
특징 | GROUP BY | OVER() |
원본 데이터 유지 | ❌ (유지 안함) | ✅ (유지함) |
결과 행 수 | 그룹 수 만큼만 | 원본 데이터 그대로 |
목적 | 요약된 데이터만 필요할 때 | 원본 데이터에 분석정보 추가할 때 |
4. GROUP BY와 OVER 사용 기준
GROUP BY : 원본 데이터를 **요약(압축)**해서 보여줄 때 사용
✅ 특정 그룹별로 요약된 정보만 필요할 때
✅ 그룹 단위로 계산된 결과만 필요하고, 상세한 행별 데이터는 필요 없을 때
OVER : 원본 데이터를 그대로 유지하고 각 행에 추가적인 분석정보를 붙일 때 사용
✅ 원본 데이터를 유지한 채, 추가로 계산된 정보를 각 행마다 보고 싶을 때
✅ 그룹핑, 순위, 누적합계, 이동평균 등을 각 행에 추가하고 싶을 때
기준 | GROUP BY | OVER() |
원본 데이터 유지 | ❌ (요약됨) | ✅ (유지됨) |
행 개수 | 그룹 수만큼 (압축됨) | 원본 그대로 (압축 안됨) |
주된 목적 | 요약 정보만 볼 때 | 상세한 데이터와 분석 정보 함께 볼 때 |
예시 상황 | 월별 판매액 총계만 보고 싶음 | 각 판매 건마다 월별 총계를 추가로 붙이고 싶음 |
GROUP BY, OVER()는 적절한 상황에서 사용하고
동시에 사용도 가능하다.