You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by mm...@apache.org on 2017/09/05 14:36:55 UTC
[12/16] calcite git commit: [CALCITE-1069] In Aggregate,
deprecate indicators, and allow GROUPING to be used as an aggregate function
http://git-wip-us.apache.org/repos/asf/calcite/blob/1e7ae1c3/core/src/test/resources/sql/agg.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/agg.iq b/core/src/test/resources/sql/agg.iq
index 28e8b4b..ba97052 100755
--- a/core/src/test/resources/sql/agg.iq
+++ b/core/src/test/resources/sql/agg.iq
@@ -483,17 +483,52 @@ group by deptno;
+---+---+
| C | G |
+---+---+
-| 1 | 1 |
-| 1 | 1 |
-| 1 | 1 |
-| 2 | 1 |
-| 2 | 1 |
-| 2 | 1 |
+| 1 | 0 |
+| 1 | 0 |
+| 1 | 0 |
+| 2 | 0 |
+| 2 | 0 |
+| 2 | 0 |
+---+---+
(6 rows)
!ok
+!use scott
+
+# GROUPING in SELECT clause of CUBE query
+select deptno, job, count(*) as c, grouping(deptno) as d,
+ grouping(job) j, grouping(deptno, job) as x
+from "scott".emp
+group by cube(deptno, job);
++--------+-----------+----+---+---+---+
+| DEPTNO | JOB | C | D | J | X |
++--------+-----------+----+---+---+---+
+| 10 | CLERK | 1 | 0 | 0 | 0 |
+| 10 | MANAGER | 1 | 0 | 0 | 0 |
+| 10 | PRESIDENT | 1 | 0 | 0 | 0 |
+| 10 | | 3 | 0 | 1 | 1 |
+| 20 | ANALYST | 2 | 0 | 0 | 0 |
+| 20 | CLERK | 2 | 0 | 0 | 0 |
+| 20 | MANAGER | 1 | 0 | 0 | 0 |
+| 20 | | 5 | 0 | 1 | 1 |
+| 30 | CLERK | 1 | 0 | 0 | 0 |
+| 30 | MANAGER | 1 | 0 | 0 | 0 |
+| 30 | SALESMAN | 4 | 0 | 0 | 0 |
+| 30 | | 6 | 0 | 1 | 1 |
+| | ANALYST | 2 | 1 | 0 | 2 |
+| | CLERK | 4 | 1 | 0 | 2 |
+| | MANAGER | 3 | 1 | 0 | 2 |
+| | PRESIDENT | 1 | 1 | 0 | 2 |
+| | SALESMAN | 4 | 1 | 0 | 2 |
+| | | 14 | 1 | 1 | 3 |
++--------+-----------+----+---+---+---+
+(18 rows)
+
+!ok
+
+!use post
+
# GROUPING, GROUP_ID, GROUPING_ID in SELECT clause of GROUP BY query
select count(*) as c,
grouping(deptno) as g,
@@ -501,22 +536,29 @@ select count(*) as c,
grouping_id(deptno) as gd,
grouping_id(gender) as gg,
grouping_id(gender, deptno) as ggd,
- grouping_id(gender, deptno) as gdg
+ grouping_id(deptno, gender) as gdg
from emp
-group by deptno, gender;
+group by rollup(deptno, gender);
+---+---+-----+----+----+-----+-----+
| C | G | GID | GD | GG | GGD | GDG |
+---+---+-----+----+----+-----+-----+
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 1 | 1 | 3 | 1 | 1 | 3 | 3 |
-| 2 | 1 | 3 | 1 | 1 | 3 | 3 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 2 | 0 | 0 | 0 | 0 | 0 | 0 |
+| 9 | 1 | 0 | 1 | 1 | 3 | 3 |
+| 1 | 0 | 0 | 0 | 1 | 2 | 1 |
+| 1 | 0 | 0 | 0 | 1 | 2 | 1 |
+| 1 | 0 | 0 | 0 | 1 | 2 | 1 |
+| 2 | 0 | 0 | 0 | 1 | 2 | 1 |
+| 2 | 0 | 0 | 0 | 1 | 2 | 1 |
+| 2 | 0 | 0 | 0 | 1 | 2 | 1 |
+---+---+-----+----+----+-----+-----+
-(8 rows)
+(15 rows)
!ok
@@ -527,40 +569,48 @@ select count(*) as c,
grouping(deptno, gender, deptno) as gdgd,
grouping_id(deptno, gender, deptno) as gidgd
from emp
-group by deptno, gender
+group by rollup(deptno, gender)
having grouping(deptno) <= grouping_id(deptno, gender, deptno);
+---+----+-----+------+-------+
| C | GD | GID | GDGD | GIDGD |
+---+----+-----+------+-------+
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 1 | 1 | 1 | 7 | 7 |
-| 2 | 1 | 1 | 7 | 7 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 0 | 0 |
+| 2 | 0 | 0 | 0 | 0 |
+| 1 | 0 | 0 | 2 | 2 |
+| 1 | 0 | 0 | 2 | 2 |
+| 1 | 0 | 0 | 2 | 2 |
+| 2 | 0 | 0 | 2 | 2 |
+| 2 | 0 | 0 | 2 | 2 |
+| 2 | 0 | 0 | 2 | 2 |
+| 9 | 1 | 1 | 7 | 7 |
+---+----+-----+------+-------+
-(8 rows)
+(15 rows)
!ok
# GROUPING in ORDER BY clause
select count(*) as c
from emp
-group by deptno
-order by grouping(deptno);
+group by rollup(deptno)
+order by grouping(deptno), c;
+---+
| C |
+---+
| 1 |
-| 2 |
| 1 |
-| 2 |
| 1 |
| 2 |
+| 2 |
+| 2 |
+| 9 |
+---+
-(6 rows)
+(7 rows)
!ok
@@ -605,27 +655,28 @@ group by rollup(deptno);
select deptno, gender, grouping(deptno) gd, grouping(gender) gg,
grouping_id(deptno, gender) dg, grouping_id(gender, deptno) gd,
group_id() gid, count(*) c
-from emp group by cube(deptno, gender);
+from emp
+group by cube(deptno, gender);
+--------+--------+----+----+----+----+-----+---+
| DEPTNO | GENDER | GD | GG | DG | GD | GID | C |
+--------+--------+----+----+----+----+-----+---+
| 10 | F | 0 | 0 | 0 | 0 | 0 | 1 |
| 10 | M | 0 | 0 | 0 | 0 | 0 | 1 |
-| 10 | | 0 | 1 | 1 | 2 | 1 | 2 |
| 20 | M | 0 | 0 | 0 | 0 | 0 | 1 |
-| 20 | | 0 | 1 | 1 | 2 | 1 | 1 |
| 30 | F | 0 | 0 | 0 | 0 | 0 | 2 |
-| 30 | | 0 | 1 | 1 | 2 | 1 | 2 |
| 50 | F | 0 | 0 | 0 | 0 | 0 | 1 |
| 50 | M | 0 | 0 | 0 | 0 | 0 | 1 |
-| 50 | | 0 | 1 | 1 | 2 | 1 | 2 |
| 60 | F | 0 | 0 | 0 | 0 | 0 | 1 |
-| 60 | | 0 | 1 | 1 | 2 | 1 | 1 |
| | F | 0 | 0 | 0 | 0 | 0 | 1 |
-| | F | 1 | 0 | 2 | 1 | 2 | 6 |
-| | M | 1 | 0 | 2 | 1 | 2 | 3 |
-| | | 0 | 1 | 1 | 2 | 1 | 1 |
-| | | 1 | 1 | 3 | 3 | 3 | 9 |
+| | | 1 | 1 | 3 | 3 | 0 | 9 |
+| 10 | | 0 | 1 | 1 | 2 | 0 | 2 |
+| 20 | | 0 | 1 | 1 | 2 | 0 | 1 |
+| 30 | | 0 | 1 | 1 | 2 | 0 | 2 |
+| 50 | | 0 | 1 | 1 | 2 | 0 | 2 |
+| 60 | | 0 | 1 | 1 | 2 | 0 | 1 |
+| | F | 1 | 0 | 2 | 1 | 0 | 6 |
+| | M | 1 | 0 | 2 | 1 | 0 | 3 |
+| | | 0 | 1 | 1 | 2 | 0 | 1 |
+--------+--------+----+----+----+----+-----+---+
(17 rows)
@@ -720,6 +771,142 @@ group by rollup(1);
!use scott
+# When
+# [CALCITE-1824] GROUP_ID returns wrong result
+# is fixed, there will be an extra row (null, 1, 14).
+select deptno, group_id() as g, count(*) as c
+from "scott".emp
+group by grouping sets (deptno, (), ());
+
++--------+---+----+
+| DEPTNO | G | C |
++--------+---+----+
+| 10 | 0 | 3 |
+| 20 | 0 | 5 |
+| 30 | 0 | 6 |
+| | 0 | 14 |
++--------+---+----+
+(4 rows)
+
+!ok
+
+# From http://rwijk.blogspot.com/2008/12/groupid.html
+select deptno
+ , job
+ , empno
+ , ename
+ , sum(sal) sumsal
+ , case grouping_id(deptno,job,empno)
+ when 0 then 'grouped by deptno,job,empno,ename'
+ when 1 then 'grouped by deptno,job'
+ when 3 then 'grouped by deptno'
+ when 7 then 'grouped by ()'
+ end gr_text
+ from "scott".emp
+ group by rollup(deptno,job,(empno,ename))
+ order by deptno
+ , job
+ , empno;
+
++--------+-----------+-------+--------+----------+-----------------------------------+
+| DEPTNO | JOB | EMPNO | ENAME | SUMSAL | GR_TEXT |
++--------+-----------+-------+--------+----------+-----------------------------------+
+| 10 | CLERK | 7934 | MILLER | 1300.00 | grouped by deptno,job,empno,ename |
+| 10 | CLERK | | | 1300.00 | grouped by deptno,job |
+| 10 | MANAGER | 7782 | CLARK | 2450.00 | grouped by deptno,job,empno,ename |
+| 10 | MANAGER | | | 2450.00 | grouped by deptno,job |
+| 10 | PRESIDENT | 7839 | KING | 5000.00 | grouped by deptno,job,empno,ename |
+| 10 | PRESIDENT | | | 5000.00 | grouped by deptno,job |
+| 10 | | | | 8750.00 | grouped by deptno |
+| 20 | ANALYST | 7788 | SCOTT | 3000.00 | grouped by deptno,job,empno,ename |
+| 20 | ANALYST | 7902 | FORD | 3000.00 | grouped by deptno,job,empno,ename |
+| 20 | ANALYST | | | 6000.00 | grouped by deptno,job |
+| 20 | CLERK | 7369 | SMITH | 800.00 | grouped by deptno,job,empno,ename |
+| 20 | CLERK | 7876 | ADAMS | 1100.00 | grouped by deptno,job,empno,ename |
+| 20 | CLERK | | | 1900.00 | grouped by deptno,job |
+| 20 | MANAGER | 7566 | JONES | 2975.00 | grouped by deptno,job,empno,ename |
+| 20 | MANAGER | | | 2975.00 | grouped by deptno,job |
+| 20 | | | | 10875.00 | grouped by deptno |
+| 30 | CLERK | 7900 | JAMES | 950.00 | grouped by deptno,job,empno,ename |
+| 30 | CLERK | | | 950.00 | grouped by deptno,job |
+| 30 | MANAGER | 7698 | BLAKE | 2850.00 | grouped by deptno,job,empno,ename |
+| 30 | MANAGER | | | 2850.00 | grouped by deptno,job |
+| 30 | SALESMAN | 7499 | ALLEN | 1600.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7521 | WARD | 1250.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7654 | MARTIN | 1250.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7844 | TURNER | 1500.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | | | 5600.00 | grouped by deptno,job |
+| 30 | | | | 9400.00 | grouped by deptno |
+| | | | | 29025.00 | grouped by () |
++--------+-----------+-------+--------+----------+-----------------------------------+
+(27 rows)
+
+!ok
+
+# From http://rwijk.blogspot.com/2008/12/groupid.html
+# (replacing "to_char(...)" with "cast(... as varchar)")
+# The current results are incorrect. When
+# [CALCITE-1824] GROUP_ID returns wrong result
+# is fixed, there will be 4 more rows.
+select deptno
+ , job
+ , empno
+ , ename
+ , sum(sal) sumsal
+ , case grouping_id(deptno,job,empno)
+ when 0 then 'grouped by deptno,job,empno,ename'
+ when 1 then 'grouped by deptno,job'
+ when 3 then 'grouped by deptno, grouping set ' || cast(3+group_id() as varchar)
+ when 7 then 'grouped by (), grouping set ' || cast(5+group_id() as varchar)
+ end gr_text
+ from "scott".emp
+ group by grouping sets
+ ( (deptno,job,empno,ename)
+ , (deptno,job)
+ , deptno
+ , deptno
+ , ()
+ , ()
+ )
+ order by deptno
+ , job
+ , empno;
+
++--------+-----------+-------+--------+----------+-----------------------------------+
+| DEPTNO | JOB | EMPNO | ENAME | SUMSAL | GR_TEXT |
++--------+-----------+-------+--------+----------+-----------------------------------+
+| 10 | CLERK | 7934 | MILLER | 1300.00 | grouped by deptno,job,empno,ename |
+| 10 | CLERK | | | 1300.00 | grouped by deptno,job |
+| 10 | MANAGER | 7782 | CLARK | 2450.00 | grouped by deptno,job,empno,ename |
+| 10 | MANAGER | | | 2450.00 | grouped by deptno,job |
+| 10 | PRESIDENT | 7839 | KING | 5000.00 | grouped by deptno,job,empno,ename |
+| 10 | PRESIDENT | | | 5000.00 | grouped by deptno,job |
+| 10 | | | | 8750.00 | grouped by deptno, grouping set 3 |
+| 20 | ANALYST | 7788 | SCOTT | 3000.00 | grouped by deptno,job,empno,ename |
+| 20 | ANALYST | 7902 | FORD | 3000.00 | grouped by deptno,job,empno,ename |
+| 20 | ANALYST | | | 6000.00 | grouped by deptno,job |
+| 20 | CLERK | 7369 | SMITH | 800.00 | grouped by deptno,job,empno,ename |
+| 20 | CLERK | 7876 | ADAMS | 1100.00 | grouped by deptno,job,empno,ename |
+| 20 | CLERK | | | 1900.00 | grouped by deptno,job |
+| 20 | MANAGER | 7566 | JONES | 2975.00 | grouped by deptno,job,empno,ename |
+| 20 | MANAGER | | | 2975.00 | grouped by deptno,job |
+| 20 | | | | 10875.00 | grouped by deptno, grouping set 3 |
+| 30 | CLERK | 7900 | JAMES | 950.00 | grouped by deptno,job,empno,ename |
+| 30 | CLERK | | | 950.00 | grouped by deptno,job |
+| 30 | MANAGER | 7698 | BLAKE | 2850.00 | grouped by deptno,job,empno,ename |
+| 30 | MANAGER | | | 2850.00 | grouped by deptno,job |
+| 30 | SALESMAN | 7499 | ALLEN | 1600.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7521 | WARD | 1250.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7654 | MARTIN | 1250.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | 7844 | TURNER | 1500.00 | grouped by deptno,job,empno,ename |
+| 30 | SALESMAN | | | 5600.00 | grouped by deptno,job |
+| 30 | | | | 9400.00 | grouped by deptno, grouping set 3 |
+| | | | | 29025.00 | grouped by (), grouping set 5 |
++--------+-----------+-------+--------+----------+-----------------------------------+
+(27 rows)
+
+!ok
+
# [KYLIN-751] Max on negative double values is not working
# [CALCITE-735] Primitive.DOUBLE.min should be large and negative
select max(v) as x, min(v) as n
@@ -1834,9 +2021,9 @@ select count(distinct EMPNO), COUNT(SAL), MIN(SAL), MAX(SAL) from "scott".emp;
!ok
EnumerableCalc(expr#0..3=[{inputs}], expr#4=[CAST($t1):BIGINT NOT NULL], EXPR$0=[$t0], EXPR$1=[$t4], EXPR$2=[$t2], EXPR$3=[$t3])
- EnumerableAggregate(group=[{}], EXPR$0=[COUNT($0) FILTER $5], EXPR$1=[MIN($2) FILTER $6], EXPR$2=[MIN($3) FILTER $6], EXPR$3=[MIN($4) FILTER $6])
- EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[1], expr#7=[CASE($t1, $t5, $t6)], expr#8=[=($t7, $t6)], expr#9=[=($t7, $t5)], proj#0..4=[{exprs}], $i0=[$t8], $=[$t9])
- EnumerableAggregate(group=[{0}], groups=[[{0}, {}]], indicator=[true], EXPR$1=[COUNT($5)], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)])
+ EnumerableAggregate(group=[{}], EXPR$0=[COUNT($0) FILTER $4], EXPR$1=[MIN($1) FILTER $5], EXPR$2=[MIN($2) FILTER $5], EXPR$3=[MIN($3) FILTER $5])
+ EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[=($t4, $t5)], expr#7=[1], expr#8=[=($t4, $t7)], proj#0..3=[{exprs}], $g_0=[$t6], $g_1=[$t8])
+ EnumerableAggregate(group=[{0}], groups=[[{0}, {}]], EXPR$1=[COUNT($5)], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)], $g=[GROUPING($0)])
EnumerableTableScan(table=[[scott, EMP]])
!plan
@@ -1852,9 +2039,9 @@ select count(distinct DEPTNO), COUNT(JOB), MIN(SAL), MAX(SAL) from "scott".emp;
!ok
EnumerableCalc(expr#0..3=[{inputs}], expr#4=[CAST($t1):BIGINT NOT NULL], EXPR$0=[$t0], EXPR$1=[$t4], EXPR$2=[$t2], EXPR$3=[$t3])
- EnumerableAggregate(group=[{}], EXPR$0=[COUNT($0) FILTER $5], EXPR$1=[MIN($2) FILTER $6], EXPR$2=[MIN($3) FILTER $6], EXPR$3=[MIN($4) FILTER $6])
- EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[1], expr#7=[CASE($t1, $t5, $t6)], expr#8=[=($t7, $t6)], expr#9=[=($t7, $t5)], proj#0..4=[{exprs}], $i0=[$t8], $=[$t9])
- EnumerableAggregate(group=[{7}], groups=[[{7}, {}]], indicator=[true], EXPR$1=[COUNT($2)], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)])
+ EnumerableAggregate(group=[{}], EXPR$0=[COUNT($0) FILTER $4], EXPR$1=[MIN($1) FILTER $5], EXPR$2=[MIN($2) FILTER $5], EXPR$3=[MIN($3) FILTER $5])
+ EnumerableCalc(expr#0..4=[{inputs}], expr#5=[0], expr#6=[=($t4, $t5)], expr#7=[1], expr#8=[=($t4, $t7)], proj#0..3=[{exprs}], $g_0=[$t6], $g_1=[$t8])
+ EnumerableAggregate(group=[{7}], groups=[[{7}, {}]], EXPR$1=[COUNT($2)], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)], $g=[GROUPING($7)])
EnumerableTableScan(table=[[scott, EMP]])
!plan
@@ -1876,9 +2063,9 @@ select MGR, count(distinct DEPTNO), COUNT(JOB), MIN(SAL), MAX(SAL) from "scott".
!ok
EnumerableCalc(expr#0..4=[{inputs}], expr#5=[CAST($t2):BIGINT NOT NULL], proj#0..1=[{exprs}], EXPR$2=[$t5], EXPR$3=[$t3], EXPR$4=[$t4])
- EnumerableAggregate(group=[{0}], EXPR$1=[COUNT($1) FILTER $7], EXPR$2=[MIN($4) FILTER $8], EXPR$3=[MIN($5) FILTER $8], EXPR$4=[MIN($6) FILTER $8])
- EnumerableCalc(expr#0..6=[{inputs}], expr#7=[0], expr#8=[1], expr#9=[CASE($t2, $t7, $t8)], expr#10=[2], expr#11=[CASE($t3, $t7, $t10)], expr#12=[+($t9, $t11)], expr#13=[3], expr#14=[=($t12, $t13)], expr#15=[=($t12, $t8)], proj#0..6=[{exprs}], $i0_1=[$t14], $i0=[$t15])
- EnumerableAggregate(group=[{3, 7}], groups=[[{3, 7}, {3}]], indicator=[true], EXPR$2=[COUNT($2)], EXPR$3=[MIN($5)], EXPR$4=[MAX($5)])
+ EnumerableAggregate(group=[{0}], EXPR$1=[COUNT($1) FILTER $5], EXPR$2=[MIN($2) FILTER $6], EXPR$3=[MIN($3) FILTER $6], EXPR$4=[MIN($4) FILTER $6])
+ EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t5, $t6)], expr#8=[1], expr#9=[=($t5, $t8)], proj#0..4=[{exprs}], $g_0=[$t7], $g_1=[$t9])
+ EnumerableAggregate(group=[{3, 7}], groups=[[{3, 7}, {3}]], EXPR$2=[COUNT($2)], EXPR$3=[MIN($5)], EXPR$4=[MAX($5)], $g=[GROUPING($3, $7)])
EnumerableTableScan(table=[[scott, EMP]])
!plan
@@ -1899,9 +2086,9 @@ select MGR, count(distinct DEPTNO, JOB), MIN(SAL), MAX(SAL) from "scott".emp gro
!ok
-EnumerableAggregate(group=[{1}], EXPR$1=[COUNT($2, $0) FILTER $8], EXPR$2=[MIN($6) FILTER $9], EXPR$3=[MIN($7) FILTER $9])
- EnumerableCalc(expr#0..7=[{inputs}], expr#8=[0], expr#9=[1], expr#10=[CASE($t3, $t8, $t9)], expr#11=[2], expr#12=[CASE($t4, $t8, $t11)], expr#13=[+($t10, $t12)], expr#14=[4], expr#15=[CASE($t5, $t8, $t14)], expr#16=[+($t13, $t15)], expr#17=[7], expr#18=[=($t16, $t17)], expr#19=[=($t16, $t11)], proj#0..7=[{exprs}], $i2_3_7=[$t18], $i3=[$t19])
- EnumerableAggregate(group=[{2, 3, 7}], groups=[[{2, 3, 7}, {3}]], indicator=[true], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)])
+EnumerableAggregate(group=[{1}], EXPR$1=[COUNT($2, $0) FILTER $5], EXPR$2=[MIN($3) FILTER $6], EXPR$3=[MIN($4) FILTER $6])
+ EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t5, $t6)], expr#8=[5], expr#9=[=($t5, $t8)], proj#0..4=[{exprs}], $g_0=[$t7], $g_5=[$t9])
+ EnumerableAggregate(group=[{2, 3, 7}], groups=[[{2, 3, 7}, {3}]], EXPR$2=[MIN($5)], EXPR$3=[MAX($5)], $g=[GROUPING($2, $3, $7)])
EnumerableTableScan(table=[[scott, EMP]])
!plan