LEAD, LAG, FIRST_VALUE, LAST_VALUE: Functions
Module: Window Functions
**Complete Syntax Reference:**
```sql
-- LAG and LEAD (offset-based)
LAG(column, offset, default) OVER (
[PARTITION BY columns]
ORDER BY columns
)
LEAD(column, offset, default) OVER (
[PARTITION BY columns]
ORDER BY columns
)
-- FIRST_VALUE and LAST_VALUE (frame-based)
FIRST_VALUE(column) OVER (
[PARTITION BY columns]
ORDER BY columns
[ROWS/RANGE BETWEEN frame_start AND frame_end]
)
LAST_VALUE(column) OVER (
[PARTITION BY columns]
ORDER BY columns
[ROWS/RANGE BETWEEN frame_start AND frame_end]
)
```
**Essential Frame Specifications:**
```sql
-- Full partition frame (most common for FIRST/LAST_VALUE)
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
-- From start to current row (default)
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- Moving window (e.g., 3-row window)
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
-- Centered window
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
```
**Practical Examples:**
```sql
-- 1. Stock price analysis
SELECT
date,
closing_price,