[
https://issues.apache.org/jira/browse/CALCITE-1016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15052170#comment-15052170
]
Julian Hyde commented on CALCITE-1016:
--------------------------------------
[~vlsi], Yes, both those statements are equivalent to {{select '1' from emp
where 1 = 0 group by 0+1}}, which also gives no rows.
Regarding {{select count( * ) from emp where 1 = 0 group by ()}}. There are no
grouping columns, so by case (a) the result of the group by clause is the
grouped table consisting of {{select * from emp where 1 = 0}} as its only group.
Read that sentence again. There is one group. It contains 0 rows.
Case ( i ) does not apply, because the grouped table has 1 group. By case (ii),
it emits one summary row per group. That is, one row.
> What should "GROUP BY 1" return on an empty table?
> --------------------------------------------------
>
> Key: CALCITE-1016
> URL: https://issues.apache.org/jira/browse/CALCITE-1016
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
>
> What should "GROUP BY 1" return on an empty table? Calcite currently returns
> 0 rows. I am hearing claims that according to standard SQL it should return 1
> row.
> Here is what Oracle 11.2.0.2.0 does.
> {noformat}
> SQL> select count(*) from emp where 1 = 0;
> COUNT(*)
> ----------
> 0
> SQL> select count(*) from emp where 1 = 0 group by ();
> no rows selected
> SQL> select count(*) from emp where 1 = 0 group by 1;
> no rows selected
> SQL> select count(*) from emp;
> COUNT(*)
> ----------
> 14
> SQL> select count(*) from emp group by ();
> COUNT(*)
> ----------
> 14
> SQL> select count(*) from emp group by 1;
> COUNT(*)
> ----------
> 14
> {noformat}
> I had expected {code}select count(*) from emp where 1 = 0 group by (){code}
> would return 1 row, but it returns 0, like {code}group by 1{code}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)