반응형
쿼리를 사용할때 partition by 를 사용하여 특정 그룹으로 묶어서 조회, 연산을 할수 있다.
group by 와 비슷할순 있으나 차이에 대해서도 아래 기술할 것이다.
먼저 사용법은 아래와 같다.
분석함수([칼럼]) OVER(PARTITION BY 칼럼1, 칼럼2... [ORDER BY 절] [WINDOWING 절])
SUM 함수
SELECT empno , ename , job , sal , SUM(sal) OVER(PARTITION BY job) FROM emp WHERE job IN ('MANAGER', 'SALESMAN') ORDER BY job |
그 밖에 COUNT, MAX, MIN, SUM, AVG 함수도 SUM 과 비슷하게 사용이 가능하다.
ROW_NUMBER 함수
SELECT empno , ename , job , sal , ROW_NUMBER() OVER(PARTITION BY job ORDER BY sal) AS rn FROM emp WHERE job IN ('MANAGER', 'SALESMAN') ORDER BY job |
그 밖에 ROW_NUMBER, RANK, DENSE_RANK 역시 사용 비슷하다.
GROUP BY 와 비슷한점, 차이점
유사점 | PARTITION BY와 GROUP BY 모두 집계된 값을 반환할 때 사용 |
차이점 | GROUP BY를 사용하면 기존 행들이 합쳐짐 집계된 값을 반환하면서 원래 행에 있었던 값을 함께 볼 수 없다. 하지만 PARTITION BY를 사용할 경우 집계된 값을 반환하면서 동시에 기존 행의 값들도 함께 볼 수 있다. |
반응형
'IT > Database' 카테고리의 다른 글
[MySQL] Packet for query is too large 에러 (18) | 2024.02.10 |
---|---|
파티션 테이블 적용, 조회 방법 (14) | 2024.02.03 |
[Oracle] EXTRACT 함수 관련 (31) | 2024.01.30 |
instr(), like 차이 및 비교 (29) | 2024.01.29 |
[Oracle] Unix Time To oracle sql (소수점 까지 f 로 ) (13) | 2024.01.25 |
댓글