이번에 SQL 코딩 문제를 풀면서 PARTITION BY 와 GROUP BY의 차이가 무엇일까 궁금해서 적어본다.
| PARTITION BY | GROUP BY |
|---|---|
| 그룹 내 순위 및 그룹별 집계를 구할 때 사용 | 그룹 외부에서 묶어 순위 및 그룹별 집계를 구할 때 사용 |
| 전체 데이터에서 원하는 결과값을 보여줌 | 특정 원하는 컬럼에 대해서 추출해 결과값을 보여줌 |
즉, 데이터를 전체 다 보고 싶다면 PARTITION BY를 쓰는 것
요약해서 하나씩 한 줄씩 보고 싶다면 GROUP BY 를 사용하면 된다.
이 둘다 공통점에 대해서는 데이터를 그룹화 한다는 점에서 유사하지만, 차이점이 있다.
특정 기준으로 데이터를 정의 하고자 할 때 사용한다.기존 행에 있던 데이터는 새로운 기준에 의해 생성된 새로운 행에 입력이 되며 집계 함수를 사용하여 기존 행에 있던 값들을 계산한 후 새로운 행에 입력해줄 수 있다.
집계 함수는 데이터를 하나로 합쳐주며, 합치는 과정에서 기존의 데이털를 잃게 된다는 점이 있다.
특정 기준에 한정하여 집계된 값을 계산 하고자 할 때 사용한다.PARTITION BY를 사용한다면 GROUP BY 는 다르게, 기존의 데이터의 정보는 사라지지 않고 유지된다는 점에서 차이가 발생한다.
즉, 기존의 데이터와 집계된 값을 함께 나란히 볼 수 있다는 점이다.
또한 PARTITION BY 는 OVER() 와 윈도우 함수와 함께 사용한다.
대표적인 윈도우 함수 6가지
ROW_NUMBER 함수
RANK 함수
DENSE_RANK 함수
NTILE 함수
LAG와 LEAD 함수