티스토리 뷰
1. LAG(),LEAD() - 역할
LAG- 명시된 값을 기준으로 이전 로우의 값 반환
LEAD- 명시된 값을 기준으로 이후 로우의 값 반환
◈ 구문형식
LAG( 조건 , 순서, 디폴트) OVER ( PARTITION BY 절)
LEAD( 조건 , 순서, 디폴트) OVER ( PARTITION BY 절)
2. LAG(),LEAD() - 기본 테이블
◈ TEST_TABLE_ONE
IDX | NAME | ID | DEPT | AMT |
1 | 테스트1 | test1 | test_d1 | 1000 |
2 | 테스트2 | test2 | test_d1 | 2000 |
3 | 테스트3 | test3 | test_d2 | 2000 |
4 | 테스트4 | test4 | test_d2 | 4000 |
5 | 테스트5 | test5 | test_d2 | 5000 |
3. LAG(),LEAD() - SQL 문장
1 2 3 4 5 6 | SELECT NAME ,AMT ,LAG(NAME) OVER(ORDER BY NAME) AS PREV_NAME ,LEAD(NAME) OVER(ORDER BY NAME) AS NEXT_NAME ,LEAD(NAME,2,'이름 없음') OVER(ORDER BY NAME) AS T_NEXT_NAME FROM TEST_TABLE_ONE |
◈ 결과 테이블
NAME | AMT | PREV_NAME | NEXT_NAME | T_NEXT_NAME |
테스트1 | 1000 | 테스트2 | 테스트3 | |
테스트2 | 2000 | 테스트1 | 테스트3 | 테스트4 |
테스트3 | 2000 | 테스트2 | 테스트4 | 테스트5 |
테스트4 | 3000 | 테스트3 | 테스트5 | 이름 없음 |
테스트5 | 4000 | 테스트4 | 이름 없음 |
◈ 설명
PREV_NAME : LAG 함수를 활용하여 이전에 있는 NAME 값을 가져옵니다.
없을 경우는 NULL 입니다.
NEXT_NAME : LEAD 함수를 활용하여 이후에 있는 NAME 값을 가져옵니다.
없을 경우는 NULL 입니다.
T_NEXT_NAME : LEAD 함수를 활용하는데 순서는 2번째 부터 즉 테스트1,테스트2를 건너 뛰고 테스트3
부터 가져오고 디폴트 값이 '이름 없음' 즉 NULL 일 경우에는 '이름 없음'으로 표시하게 합니다.
'[개발]프로그래밍 > sql' 카테고리의 다른 글
[oracle] GROUPING SETS - 개별 집계 함수 (0) | 2016.11.02 |
---|---|
[oracle] GROUPING() - 그룹핑 쿼리에 사용되는 함수 (0) | 2016.11.01 |
[oracle] FIRST_VALUE(),LAST_VALUE() - 처음과 마지막 로우 (0) | 2016.10.28 |
[oracle] 윈도우 함수 - 그룹 속의 작은 소그룹 (0) | 2016.10.28 |
[oracle] WIDTH_BUCKET() - 특정 범위내에서 특정 기준 (0) | 2016.10.28 |
- Total
- Today
- Yesterday