본문 바로가기
IT/MSSql

[MS-SQL] PARTITION BY vs GROUP BY 차이

by 뉴비 출근러 2025. 6. 19.
728x90
반응형

 

기존에 개발되었던 저장 프로시저를 보다가 문득 의문이 들었던 부분이다.

 

지금까지는 SUM 집계함수 절을 사용할때는 GROUP BY를 이용하여 특정 컬럼을 기준으로 합계를 구하는 방법만 사용해왔다.

그런데 SUM절과 PARTITION BY절을 같이 쓰는 쿼리를 보게 되었다.

 

대충 구성은 아래와 같이 되어있다.

 

SELECT
	VALUE_1,
	SUM(VALUE_2) OVER
        (
           	PARTITION BY VALUE_1
         ) AS VALUE_2
FROM TEST

 

 

아직 PARTITION BY를 잘 몰라 대체 왜? 굳이? GROUP BY가 아닌 PARTITION BY를 쓴거지? 어처피 GROUPING하는건 똑같이 않나? 라고 생각하고 PARTITION BY의 기능에 대해 찾아보게 되었고 내가 까먹었을 때 찾아보기 위한 글이다.

 

공통점은 위에 내가 말한대로 Group by던 Partition By 던 둘 다 Grouping하여 무언갈 동작 하게 하는것은 맞다. 하지만 가장 큰 차이점이 있으니

 

Group By는 ID(Grouping 할 기준)으로 중복되어 있는 데이터들을 합쳐서 보여주고 Partition By는 중복된 데이터가 있어도 각각의 Row마다 Grouping하여 계산한 결과를 보여준다는 것이다.

 

SELECT
	VALUE_1,
    	SUM(VALUE_2) AS VALUE_2
FROM
		TEST
GROUP BY
		VALUE_1

 

 

위에서부터 TEST테이블의 전체 ROW SELECT, PARTITION BY, GROUP BY

 

사진을 보면 바로 이해가 될 것이다.

굳이 저렇게 사용하는 이유는 사용자에게 어떤 화면을 보여줄지 설계하는것이 따라 저렇게도 사용하지 않을까 생각한다..

728x90
반응형