[MYSQL] PARTITON BY, GROUP BY 차이

이병수·2024년 2월 20일

SQL

목록 보기
6/6
post-thumbnail

PARTITON BY 와 GROUP BY 차이


이번에 SQL 코딩 문제를 풀면서 PARTITION BY 와 GROUP BY의 차이가 무엇일까 궁금해서 적어본다.


PARTITION BYGROUP BY
그룹 내 순위 및 그룹별 집계를 구할 때 사용그룹 외부에서 묶어 순위 및 그룹별 집계를 구할 때 사용
전체 데이터에서 원하는 결과값을 보여줌특정 원하는 컬럼에 대해서 추출해 결과값을 보여줌

즉, 데이터를 전체 다 보고 싶다면 PARTITION BY를 쓰는 것
요약해서 하나씩 한 줄씩 보고 싶다면 GROUP BY 를 사용하면 된다.

이 둘다 공통점에 대해서는 데이터를 그룹화 한다는 점에서 유사하지만, 차이점이 있다.

GROUP BY

  • 특정 기준으로 데이터를 정의 하고자 할 때 사용한다.

기존 행에 있던 데이터는 새로운 기준에 의해 생성된 새로운 행에 입력이 되며 집계 함수를 사용하여 기존 행에 있던 값들을 계산한 후 새로운 행에 입력해줄 수 있다.

집계 함수는 데이터를 하나로 합쳐주며, 합치는 과정에서 기존의 데이털를 잃게 된다는 점이 있다.


PARTITION BY

  • 특정 기준에 한정하여 집계된 값을 계산 하고자 할 때 사용한다.

PARTITION BY를 사용한다면 GROUP BY 는 다르게, 기존의 데이터의 정보는 사라지지 않고 유지된다는 점에서 차이가 발생한다.

즉, 기존의 데이터와 집계된 값을 함께 나란히 볼 수 있다는 점이다.

또한 PARTITION BY 는 OVER() 와 윈도우 함수와 함께 사용한다.


윈도우 함수

대표적인 윈도우 함수 6가지

  • ROW_NUMBER 함수

    • 각 행에 연속적인 숫자를 부여한다. 괄호 안에 열 이름을 적을 수 없다.
  • RANK 함수

    • ROW_NUMBER 함수와는 비슷하나, 해당 함수는 괄호 안에 열 이름을 적을 수 있다.
    • 순위는 괄호 안에 적은 열의 값을 기준으로 부여한다.
  • DENSE_RANK 함수

    • RANK 함수와 거의 유사하지만, 숫자를 뛰어넘어 순위를 부여하지 않는다.
    • 즉, 10위 2개 있더라도 다음이 12 가 아닌 11로 부여가 된다.
  • NTILE 함수

    • 4분위, 십분위, 백분위 등을 계산할 때 사용
  • LAG와 LEAD 함수

    • 특정 행 이전 혹은 이후에 행을 반환해준다.
profile
백엔드 개발자가 되고 싶어요

0개의 댓글