[jOOQ/jOOQ#11547] Improved stat function emulations

This commit is contained in:
Lukas Eder 2021-05-24 13:57:33 +02:00
parent c52b01f8c5
commit 01bbe93e12
3 changed files with 7 additions and 3 deletions

View File

@ -109,7 +109,7 @@ extends
Field<? extends Number> x = (Field) getArguments().get(0);
Field<? extends Number> y = (Field) getArguments().get(1);
ctx.visit(fo(DSL.sum(x.times(y))).minus(fo(DSL.sum(x(x, y))).times(fo(DSL.sum(y(x, y)))).div(fon(DSL.count(x.plus(y))).cast(d(ctx)))).div(fon(DSL.count(x.plus(y))).cast(d(ctx))));
ctx.visit(fo(DSL.regrSXY(x, y)).div(fo(DSL.regrCount(y, x))));
}

View File

@ -109,7 +109,7 @@ extends
Field<? extends Number> x = (Field) getArguments().get(0);
Field<? extends Number> y = (Field) getArguments().get(1);
ctx.visit(fo(DSL.avg(x(x, y).cast(d(ctx)))).minus(fo(DSL.regrSlope(x, y)).times(fo(DSL.avg(y(x, y).cast(d(ctx)))))));
ctx.visit(fo(regrAvgY(x, y)).minus(fo(regrSlope(x, y)).times(fo(regrAvgX(x, y)))));
}

View File

@ -106,10 +106,14 @@ extends
@SuppressWarnings("unchecked")
private final void acceptEmulation(Context<?> ctx) {
Field<? extends Number> x = (Field) getArguments().get(0);
Field<? extends Number> y = (Field) getArguments().get(1);
ctx.visit(fo(DSL.regrCount(x, y)).times(fo(DSL.covarPop(x, y))));
// [#11547] The formal emulation is REGR_COUNT(x, y) * COVAR_POP(x, y), but
// COVAR_POP(x, y) can be expressed as REGR_SXY(x, y) / REGR_COUNT(x, y)
// ctx.visit(fo(DSL.regrCount(x, y)).times(fo(DSL.covarPop(x, y))));
ctx.visit(fo(DSL.sum(x.times(y))).minus(fo(DSL.sum(x(x, y))).times(fo(DSL.sum(y(x, y)))).div(fon(DSL.count(x.plus(y))).cast(d(ctx)))));
}