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

Vladimir Sitnikov commented on CALCITE-1016:
--------------------------------------------

{quote}
7.9 <group by clause>
2) Case:
a) If there are no grouping columns, then the result of the <group by clause> 
is the grouped
table consisting of T as its only group
{quote}

{quote}7.11 <query specification>
b) If T is a grouped table, then
Case:
i) If T has 0 (zero) groups, then the result of the <query specification> is 
*an empty table*
{quote}

"I'm not a lawyer, but" it sounds like "as soon as you have a group_by_clause, 
empty input results in empty output".

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

Reply via email to