Interface OptionallyOrderedAggregateFunction<T>

All Superinterfaces:
AggregateFilterStep<T>, Field<T>, FieldOrConstraint, FieldOrRow, FieldOrRowOrSelect, GroupField, Named, OrderedAggregateFunction<T>, OrderField<T>, QueryPart, SelectField<T>, SelectFieldOrAsterisk, Serializable, TableElement, Typed<T>, WindowBeforeOverStep<T>, WindowOverStep<T>

public interface OptionallyOrderedAggregateFunction<T> extends OrderedAggregateFunction<T>, AggregateFilterStep<T>
An ordered-set aggregate function.

An ordered-set aggregate function is an aggregate function with a mandatory Oracle-specific WITHIN GROUP (ORDER BY …) clause. An example is LISTAGG:

SELECT   LISTAGG(TITLE, ', ')
         WITHIN GROUP (ORDER BY TITLE)
FROM     T_BOOK
GROUP BY AUTHOR_ID
The above function groups books by author and aggregates titles into a concatenated string.

Ordered-set aggregate functions can be further converted into window functions using the OVER(PARTITION BY …) clause. For example:

SELECT LISTAGG(TITLE, ', ')
       WITHIN GROUP (ORDER BY TITLE)
       OVER (PARTITION BY AUTHOR_ID)
FROM   T_BOOK
Author:
Lukas Eder