- LAG() 함수 : 현재 행의 이전 행 값을 가져온다.
- LEAD() 함수 : 현재 행의 다음 행 값을 가져온다.
SELECT절에서 주로 사용되며, 서브쿼리나 CTE(Common Table Expression) 내에서 사용할 수 있다.
🔺WHERE 절이나 ORDER BY 절에서 사용할 수는 없음!
LAG() 함수
기본 구문
LAG(column_name, offset, default_value) OVER (PARTITION BY ... ORDER BY ...)
- column_name: 참조할 열.
- offset: 이전 행의 수 (기본값은 1).
- default_value: 이전 행이 없을 때 반환할 기본값 (기본값은 NULL).
예시
SELECT
id,
temperature,
LAG(temperature) OVER (ORDER BY recordDate) AS previous_temp
FROM Weather;
#output
| id | recordDate | temperature | temp2 |
| -- | ---------- | ----------- | ----- |
| 1 | 2015-01-01 | 10 | null |
| 2 | 2015-01-02 | 25 | 10 |
| 3 | 2015-01-03 | 20 | 25 |
| 4 | 2015-01-04 | 30 | 20 |
LEAD() 함수
기본 구문
LEAD(column_name, offset, default_value) OVER (PARTITION BY ... ORDER BY ...)
- column_name: 참조할 열.
- offset: 다음 행의 수 (기본값은 1).
- default_value: 다음 행이 없을 때 반환할 기본값 (기본값은 NULL).
예시
SELECT
id,
temperature,
LEAD(temperature) OVER (ORDER BY recordDate) AS next_temp
FROM Weather;
#output
| id | temperature | next_temp |
| -- | ----------- | --------- |
| 1 | 10 | 25 |
| 2 | 25 | 20 |
| 3 | 20 | 30 |
| 4 | 30 | null |
'내일배움캠프 > SQL' 카테고리의 다른 글
[SQL]SQL반복문_재귀적 CTE(WITH RECURSIVE) (1) | 2024.12.12 |
---|---|
[SQL] null값 대체하기_COALESCE, IFNULL (0) | 2024.12.12 |
[SQL] WITH절이란, 서브쿼리와의 쓰임새 차이 (0) | 2024.12.06 |
[SQL]WINDOW함수 (0) | 2024.12.05 |
[SQL]서브쿼리(Subquery)의 특징과 분류 (1) | 2024.12.02 |