본문 바로가기
오라클 게시판/오라클 함수

【오라클(Oracle) SQL 함수】 LEAD 함수

by 기서무나구물 2018. 11. 24.

포스팅 목차

    o LEAD

     


    문법

    lead::=

     

     

    목 적

    LEAD함수는 분석 함수이다. 이 함수는 Self 조인 작업을 수행하지 않고, 하나의 테이블을 접근하면서 여러 개의 행에 동시에 접근(Access)하여 작업한다. 쿼리에서 수행되는 행의 Series나 커서의 위치를 지정하면, LEAD 함수는 해당 위치 이후에 존재하는 물리적 Offset의 행에 ACCESS 한다.


    만약 Offset을 지정하지 않으면, 기본적으로 1이다. 만약 Offset이 윈도우의 유효 범위를 넘었을 경우, 옵션의 기본값이 반환된다. 만약 default값을 지정하지 않으면, 그것의 default는 NULL이다.

    value_expr에 대하여 LAG 또는 다른 분석 함수를 지정할 수 없다. Nest 분석 함수는 사용할 수 없지만, value_expr에 대하여 다른 built-in 함수를 사용할 수 있다.

    LEAD와 LAG 분석 함수는 동일한 테이블에 있는 다른 행의 값을 참조하기 위한 함수이다. LAG 분석 함수는 현재 행을 기준으로 이전 값을 참조하는 함수이고, LEAD 분석 함수는 이후의 값을 참조하는 함수이다.
    LAG와 LEAD 분석 함수에서 지정하는 인수는 현재 행을 기준으로 몇 번째 행을 참조할 것인지를 지정하며, 음수는 사용할 수 없다.
    실무 데이터베이스에서 LAG와 LEAD 분석 함수는 일별 매출 추이 등과 같이 연속적인 데이터 값을 분석할 때 유용하게 사용할 수 있다.

    See Also:"About SQL Expressions " for information on valid forms of expr and LAG

     


    패키지 함수 비교(Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table)

     


    관련 함수

    함수명 함수 내용
    CUME_DIST
    그룹에 존재하는 관측치의 누적 분포 값을 계산한다.
    DENSE_RANK Rank()와 유사한 함수로 각 그룹별로 ORDER BY절에 사용된 칼럼이나 표현식을 기준으로 정렬하고, 그룹 내의 각 열에 대한 순위를 부여한다. 
    LAG 이 함수는 Self 조인 작업 수행하지 않고, 하나의 테이블을 접근하면서 여러 개의 행에 동시에 접근(Access)하여 작업한다. LAG 함수는 현재 위치를 기준으로 이전에 위치한 행에 접근하여 작업을 수행한다.
    LEAD 이 함수는 Self 조인 작업을 수행하지 않고, 하나의 테이블을 접근하면서 여러 개의 행에 동시에 접근(Access)하여 작업한다. 쿼리에서 수행되는 행의 Series나 커서의 위치를 지정하면, LEAD 함수는 해당 위치 이후에 존재하는 물리적 Offset의 행에 ACCESS 한다.
    NTILE 그룹 내에서 정렬된 데이터를 expr에 의해 지정된 bucket의 수로 분할하여, 각 행을 적절한 bucket의 번호를 부여하여 할당한다.
    PERCENT_RANK
    인수로 지정한 값의 그룹 내의 위치를 나타내는 백분위 순위(순위 퍼센트, Percent rank)를 반환한다.
    RANK 값의 그룹에서 값의 순위를 계산한다. 반환되는 데이터형은 NUMBER이다.
    ROW_NUMBER 이 함수는 파티션 그룹별 또는 전체 데이터에 대하여 order_by_clause에서 지정된 행의 정렬 순위대로 1로 시작하는 중복을 허용하지 않는 유일한(unique) 순서 값을 할당한다. (파티션에서 각 행 또는 쿼리에 의해서 반환되는 각 행에 대하여)

     

     


    예 제

    다음 예제는 employees 테이블에서 각 판매원에 대하여, 직후에 고용된 종업원의 고용 개시일을 구한다.

    Oracle Program
    SELECT last_name, hire_date, 
           LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired" 
    FROM   employees
    WHERE  department_id = 30;

     

    Results
    LAST_NAME                 HIRE_DATE NextHired
    ------------------------- --------- ---------
    Raphaely                  07-DEC-94 18-MAY-95
    Khoo                      18-MAY-95 24-JUL-97
    Tobias                    24-JUL-97 24-DEC-97
    Baida                     24-DEC-97 15-NOV-98
    Himuro                    15-NOV-98 10-AUG-99
    Colmenares                10-AUG-99

     


    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크
    반응형

    댓글