[#5700] Add support for Oracle's STATS_MODE() aggregate function
This commit is contained in:
parent
55ad021cda
commit
006fd92c37
@ -17376,6 +17376,14 @@ public class DSL {
|
||||
return new org.jooq.impl.Function<BigDecimal>("avg", true, SQLDataType.NUMERIC, nullSafe(field));
|
||||
}
|
||||
|
||||
/**
|
||||
* The <code>mode(field)</code> aggregate function.
|
||||
*/
|
||||
@Support({ POSTGRES_9_4 })
|
||||
public static <T> AggregateFunction<T> mode(Field<T> field) {
|
||||
return new org.jooq.impl.Function<T>(Term.MODE, nullSafeDataType(field), field);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the median over a numeric field: median(field).
|
||||
*/
|
||||
|
||||
@ -53,6 +53,7 @@ import static org.jooq.SQLDialect.POSTGRES_9_4;
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
import static org.jooq.impl.DSL.condition;
|
||||
import static org.jooq.impl.DSL.mode;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.one;
|
||||
import static org.jooq.impl.DSL.percentileCont;
|
||||
@ -76,6 +77,7 @@ import static org.jooq.impl.SelectQueryImpl.SUPPORT_WINDOW_CLAUSE;
|
||||
import static org.jooq.impl.Term.ARRAY_AGG;
|
||||
import static org.jooq.impl.Term.LIST_AGG;
|
||||
import static org.jooq.impl.Term.MEDIAN;
|
||||
import static org.jooq.impl.Term.MODE;
|
||||
import static org.jooq.impl.Term.ROW_NUMBER;
|
||||
import static org.jooq.impl.Tools.DataKey.DATA_WINDOW_DEFINITIONS;
|
||||
|
||||
@ -225,6 +227,9 @@ class Function<T> extends AbstractField<T> implements
|
||||
|
||||
|
||||
|
||||
else if (term == MODE && ( ctx.family() == POSTGRES)) {
|
||||
ctx.visit(mode().withinGroupOrderBy(DSL.field("{0}", arguments.get(0))));
|
||||
}
|
||||
else if (term == MEDIAN && ( ctx.family() == POSTGRES)) {
|
||||
Field<?>[] fields = new Field[arguments.size()];
|
||||
for (int i = 0; i < fields.length; i++)
|
||||
|
||||
@ -174,6 +174,19 @@ enum Term {
|
||||
return "median";
|
||||
}
|
||||
},
|
||||
MODE {
|
||||
@Override
|
||||
public String translate(SQLDialect dialect) {
|
||||
switch (dialect.family()) {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return "mode";
|
||||
}
|
||||
}
|
||||
},
|
||||
OCTET_LENGTH {
|
||||
@Override
|
||||
public String translate(SQLDialect dialect) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user