You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Yijie Shen (JIRA)" <ji...@apache.org> on 2016/04/10 11:48:25 UTC

[jira] [Updated] (FLINK-3723) Aggregate Functions and scalar expressions shouldn't be mixed in select

     [ https://issues.apache.org/jira/browse/FLINK-3723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Yijie Shen updated FLINK-3723:
------------------------------
    Description: 
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}

  was:
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*)
{code}


> 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)