LEAD
Returns a value from a subsequent row within the partition of a result set.
See also: LAG.
Syntax
LEAD ( expr [, offset ])
OVER (
[ PARTITION BY partition_expr [, ...] ]
[ ORDER BY order [ ASC | DESC ] [, ...]]
)
offset ::= integer
Arguments
Parameter |
Description |
|---|---|
|
Any value expression |
|
Specifies the offset of rows to scan forward. If not specified, defaults to 1. |
Returns
Same type as expr.
Notes
offsetis evaluated with respect to the current row. If not specified,offsetdefaults to 1.If there is no subsequent row (calculated against the current row),
LEADreturnsNULL.
Examples
For these examples, assume a table named nba, with the following structure:
CREATE TABLE nba
(
"Name" text(40),
"Team" text(40),
"Number" tinyint,
"Position" text(2),
"Age" tinyint,
"Height" text(4),
"Weight" real,
"College" text(40),
"Salary" float
);
Here’s a peek at the table contents (Download nba.csv):
Name |
Team |
Number |
Position |
Age |
Height |
Weight |
College |
Salary |
|---|---|---|---|---|---|---|---|---|
Avery Bradley |
Boston Celtics |
0.0 |
PG |
25.0 |
6-2 |
180.0 |
Texas |
7730337.0 |
Jae Crowder |
Boston Celtics |
99.0 |
SF |
25.0 |
6-6 |
235.0 |
Marquette |
6796117.0 |
John Holland |
Boston Celtics |
30.0 |
SG |
27.0 |
6-5 |
205.0 |
Boston University |
|
R.J. Hunter |
Boston Celtics |
28.0 |
SG |
22.0 |
6-5 |
185.0 |
Georgia State |
1148640.0 |
Jonas Jerebko |
Boston Celtics |
8.0 |
PF |
29.0 |
6-10 |
231.0 |
5000000.0 |
|
Amir Johnson |
Boston Celtics |
90.0 |
PF |
29.0 |
6-9 |
240.0 |
12000000.0 |
|
Jordan Mickey |
Boston Celtics |
55.0 |
PF |
21.0 |
6-8 |
235.0 |
LSU |
1170960.0 |
Kelly Olynyk |
Boston Celtics |
41.0 |
C |
25.0 |
7-0 |
238.0 |
Gonzaga |
2165160.0 |
Terry Rozier |
Boston Celtics |
12.0 |
PG |
22.0 |
6-2 |
190.0 |
Louisville |
1824360.0 |
Using LEAD to access next rows
This example calculates the salary between two players, starting from the highest salary.
t=> SELECT "Name",
. "Salary",
. LEAD("Salary") OVER (ORDER BY "Salary" DESC) AS "Salary - next",
. "Salary" - LEAD("Salary",1) OVER (ORDER BY "Salary" DESC) AS "Salary - diff"
. -- LEAD("Salary",1) is equivalent to LEAD("Salary")
. FROM nba
. LIMIT 11 ;
Name | Salary | Salary - next | Salary - diff
----------------+----------+---------------+--------------
Kobe Bryant | 25000000 | 22970500 | 2029500
LeBron James | 22970500 | 22875000 | 95500
Carmelo Anthony | 22875000 | 22359364 | 515636
Dwight Howard | 22359364 | 22192730 | 166634
Chris Bosh | 22192730 | 21468695 | 724035
Chris Paul | 21468695 | 20158622 | 1310073
Kevin Durant | 20158622 | 20093064 | 65558
Derrick Rose | 20093064 | 20000000 | 93064
Dwyane Wade | 20000000 | 19689000 | 311000
Brook Lopez | 19689000 | 19689000 | 0
DeAndre Jordan | 19689000 | 19689000 | 0