티스토리 뷰

MODEL/ORACLE

[ORACLE] window 함수(PARTITION BY,ROWS)

찰떡쿠키부스트 2017. 11. 18. 14:09

 

 

 

WINDOW함수 기본 문법

SUM(컬럼명) OVER(
 PARTITION BY [컬럼]
 ORDER BY [컬럼] [ASC/DESC]
 ROWS / RANGE
BETWEEN UNBOUNDED PRECEDING / PRECEDING / CURRENT ROW
        AND UNBOUNDED FOLLOWING / CURRENT ROW
          )
--          ROW : 부분집합인 윈도우 크기를 물리적인 단위로 행 집합을 지정
--          RANGE : 논리적인 주소에 의해 행 집합을 지정
--          UNBOUNDED PRECEDING : 윈도우의 시작 위치가 첫번째 ROW
--          UNBOUNDED FOLLOWING : 윈도우의 마지막 위치가 마지막 ROW
--          CURRENT ROW : 윈도우의 시작 위치가 현재 ROW

Temp 의 자료를 이용하여 자신의 사번, 성명, salary를 읽고, 자신을 포함한 이후 사번 중
salary가 가장 큰 금액을 함께 보여라


SELECT EMP_ID,EMP_NAME,salary,
         MAX(SALARY) OVER --연봉 최대값!
      (ORDER BY EMP_ID   -- 정렬은 사번순으로
        ROWS BETWEEN CURRENT ROW    --     현재 시작 위치와 가장 마지막 위치 사이에 있는 행들 기준으로
                                                --     그 ROWS에 대해서 연봉이 가장 높은 것을 추출해낸다.!
                 AND UNBOUNDED FOLLOWING) AS SALARY1

 FROM temp;

'MODEL > ORACLE' 카테고리의 다른 글

[ORACLE] PL/SQL [2]  (0) 2017.11.18
[ORACLE] PL/SQL  (0) 2017.11.18
[ORACLE] 분석 함수(RANK,ROW_NUMBER,DENSE_RANK)  (0) 2017.11.16
[ORACLE] 분석함수(LEAD,LAG,GREATEST,LEAST)  (0) 2017.11.16
[ORACLE] dump 파일 import & export  (2) 2017.11.16
댓글