LEAD 및 LAG 함수
Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 61번째.
LEAD 및 LAG 함수를 사용하면 현재 행의 값에서 n단계 이전 또는 n단계 이후의 값에 액세스할 수 있습니다.
예를 들어, 현재 행과 한 달 전의 회사 revenue 비율을 계산하려면 이전 달의 값을 추출할 수 있습니다:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id그러면 다음 테이블이 생성됩니다:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
이렇게 하면 prev_month_revenue/revenue 비율을 계산할 수 있습니다.
대신 LEAD 함수를 사용하면 각 행의 다음 달 revenue를 가져옵니다:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
챌린지
쉬움사용 가능한 테이블과 열:
air_conditioners:id,efficiency,strength,month
각 에어컨의 효율을 이전 에어컨의 효율과 비교하세요.
각 에어컨의 효율과 이전에 설치된 에어컨의 효율(id를 기준으로)을 함께 표시하는 쿼리를 작성하세요. 또한 현재 에어컨과 이전 에어컨 간의 효율 차이도 계산하세요. 결과는 id와 efficiency를 기준으로 오름차순 정렬하세요.
예상 출력 열:
idefficiencyprevious_efficiency(LAG사용)efficiency_difference(현재 효율 - 이전 효율)
마지막으로 쿼리를 감싸고 첫 번째 행을 필터링하세요. 첫 번째 행의 previous_efficiency(따라서 efficiency_difference도)는 비어 있으며, 즉 NULL입니다:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency IS NOT NULL직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
11윈도 함수 1부
ROW_NUMBER 함수ORDER BY 기준PARTITION BY 기준PARTITION 및 ORDERLEAD 및 LAG 함수복습 - LEAD 및 LAG복습 - 그림복습 - 상자직접 연습해 보세요: SQL 플레이그라운드