데이터 공부/SQL
[MYSQL] LEAG, LAG
민몽
2023. 1. 12. 22:24
안녕하세요 민몽입니다:>
최근 SQL 강의를 들으면서 이전 행, 이후 행이 계속 헷갈려 어떤 걸 써야할 지 어려움을 겪었어요.
그래서 오늘은 SQL의 LEAG, LAG 함수에 대해 정리해보려고 합니다 .
LEAD Function
- 현재 행 기준 아래 N번째 행 값 가져오는 함수
- 현재 행과 후속 행과의 차이를 계산할 때 유용함
- LEAD(<expr>[,offset[,default_value]]) OVER ([PARTITION BY <expr>] ORDER BY <expr>)
- offset : 지정시 N번째 값 가져옴
- default_value : N번째 값이 없을 경우 default_value 가져옴
- PARTITION BY : 지정 시 GROUP 별 행 값 가져옴
LAG Function
- 현재 행 기준 위 N번째 행 값 가져오는 함수
- 사용법은 LEAD 함수와 동일
위 내용을 토대로 LEAG,LAG 함수를 활용하는 문제를 풀어보며 다시 한 번 복습해보겠습니다.
LeetCode 180번 문제 풀이 Consecutive Numbers
Write an SQL query to find all numbers that appear at least three times consecutively.
= 연속해서 최소 3번 나타나는 숫자 찾기
1. LEAD 이용
SELECT DISTINCT num AS ConsecutiveNums
FROM(
SELECT num
, LEAD(num,1) OVER (ORDER BY id) AS next
, LEAD(num,2) OVER (ORDER BY id) AS after_next
FROM Logs
) AS next
WHERE num = next
AND next = after_next
2. LAG 이용
SELECT DISTINCT num AS ConsecutiveNums
FROM(
SELECT num
, LAG(num,1) OVER (ORDER BY id) AS prev
, LAG(num,2) OVER (ORDER BY id) AS before_prev
FROM Logs
) AS prev
WHERE num = prev
AND prev = before_prev
| 본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.
🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 Leetcode임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 Leetcode 사이트를 방문해 보세요!