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 |
---|---|
expr |
Any value expression |
offset |
Specifies the offset of rows to scan forward. If not specified, defaults to 1. |
Returns¶
Same type as expr
.
Notes¶
offset
is evaluated with respect to the current row. If not specified,offset
defaults to 1.- If there is no subsequent row (calculated against the current row),
LEAD
returnsNULL
.
Examples¶
For these examples, assume a table named nba
, with the following structure:
CREATE TABLE nba
(
"Name" varchar(40),
"Team" varchar(40),
"Number" tinyint,
"Position" varchar(2),
"Age" tinyint,
"Height" varchar(4),
"Weight" real,
"College" varchar(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