이 두 함수는 MySQL 8.0부터 지원되며, 윈도우 함수로 사용된다.
이 함수들은 OVER 절과 함께 사용되어 데이터를 그룹화하거나 정렬된 순서에 따라 특정 행의 이전 또는 다음 값을 참조한다.
LAG(column_name, offset, default_value) OVER (
PARTITION BY column_name
ORDER BY column_name
)
LEAD(column_name, offset, default_value) OVER (
PARTITION BY column_name
ORDER BY column_name
)
데이터를 정렬하거나 그룹화하여 이전 또는 다음 행의 값을 참조하면, 데이터 흐름을 효과적으로 분석할 수 있다.
https://leetcode.com/problems/consecutive-numbers/description/
같은 숫자가 적어도 3번이상 반복되는 num을 찾는 문제인데 LAG 함수를 이용해봤다.
# Write your MySQL query statement below
SELECT DISTINCT num AS ConsecutiveNums
FROM (SELECT num
, lag(num, 1) Over (ORDER BY Id) As 'lag'
, lag(num, 2) Over (ORDER BY id) AS 'lag2'
FROM Logs) result
WHERE result.num = result.lag AND result.lag2 = result.lag;