[Oracle] 오라클 FIRST_VALUE, LAST_VALUE 함수 사용법 (첫번째행, 마지막행)

오라클의 쿼리 결과에서 첫번째 행의 값을 가져올때는 FIRST_VALUE 함수를 사용하고, 마지막 행의 값을 가져올때는 LAST_VALUE 함수를 사용하면 된다.

 

FIRST_VALUE, LAST_VALUE는 오라클에서만 지원하는 함수이기 때문에 타 DB에서는 사용할 수 없다.

 

기본적인 사용법

SELECT ename
     , job
     , sal
     , FIRST_VALUE(sal) OVER() AS sal_first
     , LAST_VALUE(sal) OVER() AS sal_last
  FROM emp
 WHERE job in ('MANAGER', 'ANALYST')

 

쿼리 결과의 첫번째 행의 급여(sal) 값과 마지막 행의 급여(sal)의 값을 표시한다.

 

 

ORDER BY, PARTITION BY 사용

SELECT ename
     , hiredate
     , job
     , sal
     , FIRST_VALUE(sal) OVER(ORDER BY hiredate) AS sal_first
  FROM emp
 WHERE job in ('MANAGER', 'ANALYST')

 

OVER(ORDER BY 컬럼명)을 사용할 경우 메인 쿼리 순서와 상관없이 지정한 컬럼으로 정렬하여 첫번째 행의 값을 표시한다. 

 

SELECT ename
     , hiredate
     , job
     , sal
     , FIRST_VALUE(sal) OVER(PARTITION BY job ORDER BY hiredate) AS sal_first
  FROM emp
 WHERE job in ('MANAGER', 'ANALYST')

 

OVER(PARTITION BY 컬럼명)을 사용할 경우 해당 컬럼의 그룹별로 첫번째 행의 값을 표시 한다.

 

SELECT ename
     , hiredate
     , job
     , sal
     , LAST_VALUE(sal) OVER(ORDER BY hiredate
                            ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS sal_first
  FROM emp
 WHERE job in ('MANAGER', 'ANALYST')

 

LAST_VALUE 함수에서 ORDER BY를 사용할 경우 WINDOWING 절에 해당 조건을 추가해야 한다 "ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"

 

UNBOUNDED PRECEDING : PARTITION의 첫 번째 로우에서 윈도우가 시작한다
UNBOUNDED FOLLOWING : PARTITION의 마지막 로우에서 윈도우가 시작한다

 

SELECT ename
     , hiredate
     , job
     , sal
     , LAST_VALUE(sal) OVER(PARTITION BY job ORDER BY hiredate
                            ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS sal_first
  FROM emp
 WHERE job in ('MANAGER', 'ANALYST')

 

NULL 값을 표시 안 할 경우

SELECT ename
     , job
     , comm
     , FIRST_VALUE(comm IGNORE NULLS) OVER() AS comm_first
  FROM emp
 WHERE job in ('MANAGER', 'SALESMAN')

 

FIRST_VALUE(컬럼명 [RESPECT|IGNORE NULLS]) OVER() 

NULL 값을 제외한 가장 첫번째 행의 값을 표시한다. 

 

 

사용 예제

 

 

 

 

 

 

사용_예제_쿼리.txt
0.01MB

 

 

댓글

Designed by JB FACTORY