Grouping Sets
Definition
The groupingSets method together with the groupingSet method allows you to add the GROUPING SETS subclause to the query.
The GROUPING SETS subclause allows you to define multiple grouping sets in the same query.
Available methods
1. groupingSet(KColumn... kColumns)
- kColumns: are all the expresions that will be considered like a single grouping set that can be used in the
GROUPING SETSsubclause.
Among the possible values are:KTableColumn,KColumn.
2. groupingSets(KColumn... kColumns)
- kColumns: are all the expresions that will be added to the
GROUPING SETSsubclause. Among the possible values are:KTableColumn,KColumn,groupingSet.
tip
The use of this method is recommended in statements that involve the GROUP BY clause.
To use these methods, you need to import the static functions as follows:
import static com.myzlab.k.KFunction.*;
Example
Java code:
k
.select(
count(),
APP_USER.CREATED_AT.cast(date()),
APP_USER.ROLE_ID,
grouping(APP_USER.CREATED_AT.cast(date())),
grouping(APP_USER.ROLE_ID)
)
.from(APP_USER)
.groupBy(
groupingSets(
groupingSet(APP_USER.CREATED_AT.cast(date()), APP_USER.ROLE_ID),
APP_USER.ROLE_ID
)
)
.multiple();
SQL generated:
SELECT
COUNT(*),
CAST(au.created_at AS DATE),
au.role_id,
GROUPING(CAST(au.created_at AS DATE)),
GROUPING(au.role_id)
FROM app_user au
GROUP BY
GROUPING SETS(
(CAST(au.created_at AS DATE), au.role_id),
au.role_id
)
Parameters:
- None