데이터베이스/DBMS

GROUP BY(+집계함수) VS PARTITION BY(+윈도우함수) 차이점

꾸준함의 미더덕 2023. 12. 26. 07:16

GROUP BY

  • GROUP BY구는 자르기집약이라는 두 개의 기능으로 구분된다.
  • -> GROUP BY는 필드로 테이블을 자르고, 잘라진 조각 개수 만큼의 레코드 수에 대한 작업 결과를 출력함.

 

SELECT address, COUNT(*)
  FROM Address
  GROUP BY address;
-- 결과
address  | count 
----------------
서울시     | 3
인천시     | 2
부산시     | 1
  • -> address라는 필드의 레코드 종류가 3가지라면 3가지로 잘리고, 집약되어 3개의 레코드만 출력됨!

 

 

PARTITION BY

  • PARTITION BY를 사용하는 윈도우 함수는 자른 후에 집약하지 않음.
  • -> 잘려진 레코드의 종류별로 작업이 처리되나, 출력 결과는 집약되지 않으므로 기존 레코드 개수만큼 출력됨!
-- COUNT()는 집계함수도 가능하고 윈도우함수도 가능..!
SELECT address,
    COUNT(*) OVER(PARTITION BY address)
    FROM Address;
-- 결과 -- 정렬은 편의를 위해 임의로
address  | count 
----------------
서울시     | 3
서울시     | 3
서울시     | 3
인천시     | 2
인천시     | 2 
부산시     | 1

 

 

윈도우 함수로 사용할 수 있는 함수들

  • COUNT, SUM 같은 일반 함수
  • RANK, ROW_NUMBER 같은 윈도우 전용함수 (순서함수)

 

 

 

출처 : SQL 레벨업(한빛미디어)