개발 기록/ORACLE

[오라클] GROUP BY와 OVER 함수, 차이점과 사용 기준 한눈에 보기

추리덕후 남도일 2025. 3. 24. 22:38

프로젝트를 하면서 GROUP BY와 OVER를 쓰는 사수를 보면서 문득 저 두 개의 차이는 도대체 무엇일까? 
라는 의문이 생겨서 작성하게 되었다.

 

바로 본론으로 가보자

  1. GROUP BY
  2. OVER
  3. GROUP BY와 OVER의 차이점
  4. 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()는 적절한 상황에서 사용하고 
동시에 사용도 가능하다.