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

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

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

포스팅 목차

    o LAG

     


    문 법

    lag::=

     

     

    목 적

    LAG 함수는 분석 함수이다. 이 함수는 자체 결합(자체 조인, Self join) 작업을 수행하지 않고, 하나의 테이블에 접근하여 다수의 행에 동시에 접근(Access)하여 작업을 수행한다. LAG 함수는 현재 위치를 기준으로 이전에 위치하고 있는 행에 접근하여 작업을 수행한다.

    쿼리에서 반환된 일련의 행과 커서 위치가 주어진 경우, LAG 함수는 해당 위치 이전에 지정된 물리적 오프셋(physical offset)만큼 떨어진 위치의 행에 대한 접근을 할 수 있다.

    선택적으로 지정 할 수 있는 오프셋(offset) 인수의 경우 0보다 큰 정수를 지정한다. 만약 Offset 인수를 지정하지 않으면, 기본값은 1이다. 오프셋이 창 범위를 초과하는 경우 사용자가 선택적으로 지정하는 기본값(Default)이 반환된다. default 값을 지정하지 않으면 기본값은 NULL이다. 

    {RESPECT | IGNORE} NULLS는 value_expr 인수의 null 값을 계산에 포함할지 또는 제외할지를 결정한다. 기본값은 RESPECT NULLS 이다.

    value_expr 인수에 LAG 또는 다른 분석 함수를 사용하여 분석 함수를 중첩하여 사용할 수 없다. 그러나 value_expr 인수에 다른 기본 내장형 함수(built-in function) 표현식을 사용할 수 있다.

    LEAD와 LAG 분석 함수는 동일한 테이블에 존재하는 다른 행의 값을 함께 사용하여 처리하기 위한 함수이다. LAG 분석 함수는 현재 행을 기준으로 이전 값을 참조하는 함수이고, LEAD 분석 함수는 이후의 값에 접근하여 사용하기 위한 함수이다. LAG와 LEAD 분석 함수에서 지정하는 인수는 현재 행을 기준으로 몇 번째 행을 참조할 것인지를 지정하며, 음수는 사용할 수 없다.


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

    패키지 함수 비교(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, salary,
           LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal
    FROM   employees
    WHERE  job_id = 'PU_CLERK';

     

    Results
    LAST_NAME                 HIRE_DATE     SALARY   PREV_SAL
    ------------------------- --------- ---------- ----------
    Khoo                      18-MAY-95       3100          0
    Tobias                    24-JUL-97       2800       3100
    Baida                     24-DEC-97       2900       2800
    Himuro                    15-NOV-98       2600       2900
    Colmenares                10-AUG-99       2500       2600

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

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

    2024.01 수정

     

    Image Creator 이미지

    반응형

    댓글