[ 
https://issues.apache.org/jira/browse/FLINK-3723?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15234796#comment-15234796
 ] 

Fabian Hueske commented on FLINK-3723:
--------------------------------------

Hi [~yijieshen], thanks for your suggestion! 

The Table API was recently ported to Calcite and uses it as query optimizer 
(this code is part of the current SNAPSHOT master branch and has not been 
released yet). Similar to Calcite and Oracle, it does also require that all 
`select` expressions after a `groupBy` are either aggregations or based on 
columns that were used for grouping. We chose to not use a dedicated `agg` or 
`aggregation` method to be close to SQL which does also handle aggregations in 
the SELECT clause.

How would you select grouped fields (or define expressions based on grouped 
fields) in an `agg` call if only aggregations are allowed as parameters?

> Aggregate Functions and scalar expressions shouldn't be mixed in select
> -----------------------------------------------------------------------
>
>                 Key: FLINK-3723
>                 URL: https://issues.apache.org/jira/browse/FLINK-3723
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API
>    Affects Versions: 1.0.1
>            Reporter: Yijie Shen
>
> When we type {code}select deptno, name, max(age) from dept group by 
> deptno;{code} in calcite or Oracle, it will complain {code}Expression 'NAME' 
> is not being grouped{code} or {code}Column 'dept.name' is invalid in the 
> select list because it is not contained in either an aggregate function or 
> the GROUP BY clause.{code} because of the nondeterministic result.
> Therefore, I suggest to separate the current functionality of `select` into 
> two api, the new `select` only handle scalar expressions, and an `agg` accept 
> Aggregates.
> {code}
> def select(exprs: Expression*)
> def agg(aggs: Aggregation*)
> ....
> tbl.groupBy('deptno)
>    .agg('age.max, 'age.min)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to