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 레벨업(한빛미디어)