포스팅 목차
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 수정
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클(Oracle) SQL 함수】 LAST_DAY 함수 (0) | 2018.11.24 |
---|---|
【오라클(Oracle) 함수】 LAST 함수 (0) | 2018.11.24 |
[오라클 함수] ITERATION_NUMBER 함수 (0) | 2018.11.24 |
【오라클(Oracle) SQL 함수】 INSTR 함수 (0) | 2018.11.22 |
【오라클(Oracle) SQL 함수】 INITCAP 함수 (0) | 2018.11.22 |
댓글