- All Superinterfaces:
Collectable<T>
A window containing the data for its partition, to perform calculations upon.
Window functions as exposed in this type are inspired by their counterparts in SQL. They include:
Ranking functions
Ranking functions are useful to determine the "rank" of any given row within the partition, given a specific ordering. The following table explains individual ranking functions:Function | Description |
---|---|
rowNumber() | The distinct row number of the row within
the partition, counting from 0 . |
rank() | The rank with gaps of a row within the partition,
counting from 0 . |
denseRank() | The rank without gaps of a row within the
partition, counting from 0 . |
percentRank() | Relative rank of a row:
rank() / Collectable.count() . |
ntile(long) | Divides the partition in equal buckets and
assigns values between 0 and buckets - 1 . |
lead() | Gets the value after the current row. |
lag() | Gets the value before the current row. |
firstValue() | Gets the first value in the window. |
lastValue() | Gets the last value in the window. |
nthValue(long) | Gets the nth value in the window,
counting from 0 . |
Note: In Java, indexes are always counted from
0
, not from 1
as in SQL. This means that the above
ranking functions also rank rows from zero. This is particularly true for:
Aggregate functions
Each aggregate function fromSeq
or from Agg
is also
available as an aggregate function on the window. For instance,
Collectable.count()
is the same as calling Seq.count()
on
window()
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescriptionlong
The dense rank of the current row within the partition.The first value in the window.<U> Optional<U>
firstValue
(Function<? super T, ? extends U> function) The first value in the window.lag()
The previous value in the window.lag
(long lag) The previous value bylag
in the window.The last value in the window.<U> Optional<U>
The last value in the window.lead()
The next value in the window.lead
(long lead) The next value bylead
in the window.nthValue
(long n) The nth value in the window.<U> Optional<U>
The nth value in the window.long
ntile
(long buckets) The bucket number ("ntile") of the current row within the partition.static <T> WindowSpecification<T>
of()
static <T> WindowSpecification<T>
of
(long lower, long upper) static <T> WindowSpecification<T>
of
(Comparator<? super T> orderBy) static <T> WindowSpecification<T>
of
(Comparator<? super T> orderBy, long lower, long upper) static <T,
U> WindowSpecification<T> static <T,
U> WindowSpecification<T> static <T,
U> WindowSpecification<T> of
(Function<? super T, ? extends U> partitionBy, Comparator<? super T> orderBy) static <T,
U> WindowSpecification<T> of
(Function<? super T, ? extends U> partitionBy, Comparator<? super T> orderBy, long lower, long upper) double
The precent rank of the current row within the partition.long
rank()
The rank of the current row within the partition.long
The row number of the current row within the partition.value()
The value of the current row in the window.window()
Stream all elements in the window.Methods inherited from interface org.jooq.lambda.Collectable
allMatch, anyMatch, avg, avg, avgDouble, avgInt, avgLong, bitAnd, bitAnd, bitAndInt, bitAndLong, bitOr, bitOr, bitOrInt, bitOrLong, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, commonPrefix, commonSuffix, count, count, countDistinct, countDistinct, countDistinctBy, countDistinctBy, max, max, max, max, maxAll, maxAll, maxAll, maxAll, maxAllBy, maxAllBy, maxBy, maxBy, median, median, medianBy, medianBy, min, min, min, min, minAll, minAll, minAll, minAll, minAllBy, minAllBy, minBy, minBy, mode, modeAll, modeAllBy, modeBy, noneMatch, percentile, percentile, percentileBy, percentileBy, sum, sum, sumDouble, sumInt, sumLong, toCollection, toList, toList, toMap, toMap, toSet, toSet, toString, toString, toUnmodifiableList, toUnmodifiableSet
-
Method Details
-
of
-
of
-
of
-
of
-
of
-
of
static <T,U> WindowSpecification<T> of(Function<? super T, ? extends U> partitionBy, long lower, long upper) -
of
static <T,U> WindowSpecification<T> of(Function<? super T, ? extends U> partitionBy, Comparator<? super T> orderBy) -
of
static <T,U> WindowSpecification<T> of(Function<? super T, ? extends U> partitionBy, Comparator<? super T> orderBy, long lower, long upper) -
value
T value()The value of the current row in the window. -
window
Stream all elements in the window. -
rowNumber
long rowNumber()The row number of the current row within the partition.// (1, 2, 3, 4, 5) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.rowNumber());
-
rank
long rank()The rank of the current row within the partition.// (1, 2, 2, 4, 5) Seq.of(1, 2, 2, 3, 4).window(naturalOrder()).map(w -> w.rank());
-
denseRank
long denseRank()The dense rank of the current row within the partition.// (1, 2, 2, 3, 4) Seq.of(1, 2, 2, 3, 4).window(naturalOrder()).map(w -> w.denseRank());
-
percentRank
double percentRank()The precent rank of the current row within the partition.// (0.0, 0.25, 0.25, 0.75, 1.0) Seq.of(1, 2, 2, 3, 4).window(naturalOrder()).map(w -> w.percentRank());
-
ntile
long ntile(long buckets) The bucket number ("ntile") of the current row within the partition.// (0, 0, 1, 1, 2) Seq.of(1, 2, 2, 3, 4).window(naturalOrder()).map(w -> w.ntile(3));
-
lead
The next value in the window.This is the same as calling
lead(1)
// (2, 2, 3, 4, empty) Seq.of(1, 2, 2, 3, 4).window().map(w -> w.lead());
-
lead
The next value bylead
in the window.// (2, 2, 3, 4, empty) Seq.of(1, 2, 2, 3, 4).window().map(w -> w.lead());
-
lag
The previous value in the window.This is the same as calling
lag(1)
// (empty, 1, 2, 2, 3) Seq.of(1, 2, 2, 3, 4).window().map(w -> w.lag());
-
lag
The previous value bylag
in the window.// (empty, 1, 2, 2, 3) Seq.of(1, 2, 2, 3, 4).window().map(w -> w.lag());
-
firstValue
The first value in the window.// (1, 1, 1, 1, 1) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.firstValue());
-
firstValue
The first value in the window.// (1, 1, 1, 1, 1) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.firstValue());
-
lastValue
The last value in the window.// (3, 3, 3, 3, 3) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.lastValue());
-
lastValue
The last value in the window.// (3, 3, 3, 3, 3) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.lastValue());
-
nthValue
The nth value in the window.// (4, 4, 4, 4, 4) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.nthValue(2));
-
nthValue
The nth value in the window.// (4, 4, 4, 4, 4) Seq.of(1, 2, 4, 2, 3).window().map(w -> w.nthValue(2));
-