일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 설정
- IntelliJ
- Thymeleaf
- AJAX
- SpringBoot
- ubuntu
- JDBC
- maven
- myBatis
- spring
- JavaScript
- Open Source
- Python
- error
- Docker
- MySQL
- MSSQL
- PostgreSQL
- Exception
- STS
- oracle
- Eclipse
- 문서
- git
- Tomcat
- 오픈소스
- Source
- Spring Boot
- jpa
- Core Java
- Today
- Total
헤르메스 LIFE
[Oracle] LAG, LEAD - 이전, 이후 비교함수, 합계 본문
출처 : http://wintness.tistory.com/76
WITH TESTTABLE AS
(
SELECT 0 CAT FROM DUAL UNION ALL
SELECT 1 CAT FROM DUAL UNION ALL
SELECT 3 CAT FROM DUAL UNION ALL
SELECT 6 CAT FROM DUAL UNION ALL
SELECT 10 CAT FROM DUAL
)
SELECT CAT,
NVL(LAG(CAT, 1) OVER (ORDER BY CAT), 0) PREV_VALUE,
NVL(LEAD(CAT, 1) OVER (ORDER BY CAT), 0) NEXT_VALUE,
CAT - LAG(CAT, 1) OVER (ORDER BY CAT) GAP_BY_PREV_VALUE,
CAT - LEAD(CAT, 1) OVER (ORDER BY CAT) GAP_BY_NEXT_VALUE,
SUM(CAT) OVER (ORDER BY CAT) NEXT_SUB_SUM
FROM TESTTABLE
;
=> Prev_value 와 Next_value 에서 Null값(빈칸)으로 표시된 부분들은 대상로우의 이전값 혹은 다음값이 없는 경우에 해당한다.
기본적으로는 다음과 같다.
LEAD() - 다음값
LAG() - 이전값
* 사용법
- LAG(), LEAD() 함수 사용시 필수 입력사항 : OVER(ORDER BY )
- LAG(A, B, C) A:대상로우, B:가져와서 뿌져줄 시작로우(대상로우 이전값 출력됨, default:1), C:대상로우 이전값이 없는 경우 채울 값(default:Null)
- LEAD(A, B, C) A:대상로우, B:가져와서 뿌져줄 시작로우(대상로우 다음값 출력됨, default:1), C:대상로우 다음값이 없는 경우 채울 값(default:Null)
'Database' 카테고리의 다른 글
[Oracle] TRUNC, ROUND 차이 (0) | 2015.10.02 |
---|---|
[Oracle] PL/SQL 예제 (0) | 2015.10.02 |
[Oracle] PL/SQL PREDEFINED EXCEPTION - 미리정의된 예약 (0) | 2015.09.30 |
[Oracle] PL/SQL 예외처리 (0) | 2015.09.30 |
[Oracle] AUTHID DEFINER, AUTHID CURRENT_USER (0) | 2015.09.30 |