윈도우함수
: 행과 행간의 관계를 쉽게 정의 하기 위해 만든 함수를 이름
윈도우 함수의 생김새
함수(col) over(partition by col1 order by dol2)
함수 : min / max / sum / count / rank 등과 같은 기존의 함수 or 윈도우 함수용으로 추가된 함수
over : over는 윈도우 함수에서 꼭 들어가야하며 over내부에 partition by 절과 order by절이 들어갑니다
partition by : 전체 집합을 어떤 기준(컬럼)에 따라 나눌지를 결정하는 부분
order by : 어떤 항목(컬럼)을 기준으로 순위를 정할지 결정하는 부분
윈도우 함수의 생김새를 살펴보면 partition by에 따라 나누어 집계한다는것을 알 수 있습니다.
그럼 group by와 어떤 차이가 있을까요?
group by
기능 : 자르기 + 집약
특징 : 1. group by구에 지정된 컬럼으로 데이터를 자르고
2. 집계 함수를 이용해 집약시킨다
차이점 : 행의 수가 줄어든다
윈도우 함수
기능 : 자르기
특징 : 1. partition by구에 지정된 컬럼으로 데이터를 자른다
차이점 : 행의 수가 그대로 유지된다
따라서 group by와 윈도우 함수의 가장 큰 차이는 '집약' 과정이 존재하는가? 이다
select address
, count(*)
from address
group by 1;
select address
, count(*) over(partition by address)
from address;
위 두가지 경우를 보면 차이점을 더 명확하게 알 수 있다
group by는 집약 기능으로 인해 행 수가 줄어드는 반면, 윈도우 함수는 행 수가 그대로 남아있다
감사합니다