blob: ffda59c89e76440a9f1e715fc6bbeb8b206e42b8 [file] [log] [blame]
====
---- QUERY
# Basic ROLLUP.
select int_col, string_col, bool_col, count(*)
from alltypesagg
group by rollup(1, 2, 3)
order by count(*) desc, 1, 2, 3
limit 20
---- RESULTS
NULL,'NULL',NULL,11000
10,'10',true,20
10,'10',NULL,20
10,'NULL',NULL,20
20,'20',true,20
20,'20',NULL,20
20,'NULL',NULL,20
30,'30',true,20
30,'30',NULL,20
30,'NULL',NULL,20
40,'40',true,20
40,'40',NULL,20
40,'NULL',NULL,20
50,'50',true,20
50,'50',NULL,20
50,'NULL',NULL,20
60,'60',true,20
60,'60',NULL,20
60,'NULL',NULL,20
70,'70',true,20
---- TYPES
INT,STRING,BOOLEAN,BIGINT
====
---- QUERY
# Basic CUBE
select int_col, string_col, bool_col, count(*)
from alltypesagg
group by cube(1, 2, 3)
order by count(*) desc, 1, 2, 3
limit 20
---- RESULTS
NULL,'NULL',NULL,11000
NULL,'NULL',true,6000
NULL,'NULL',false,5000
10,'10',true,20
10,'10',NULL,20
10,'NULL',true,20
10,'NULL',NULL,20
20,'20',true,20
20,'20',NULL,20
20,'NULL',true,20
20,'NULL',NULL,20
30,'30',true,20
30,'30',NULL,20
30,'NULL',true,20
30,'NULL',NULL,20
40,'40',true,20
40,'40',NULL,20
40,'NULL',true,20
40,'NULL',NULL,20
50,'50',true,20
---- TYPES
INT,STRING,BOOLEAN,BIGINT
====
---- QUERY
# Basic GROUPING SETS
select int_col, string_col, bool_col, count(*)
from alltypesagg
group by grouping sets((int_col), (string_col), (int_col, bool_col))
order by count(*) desc, 1, 2, 3
limit 20
---- RESULTS
10,'NULL',true,20
10,'NULL',NULL,20
20,'NULL',true,20
20,'NULL',NULL,20
30,'NULL',true,20
30,'NULL',NULL,20
40,'NULL',true,20
40,'NULL',NULL,20
50,'NULL',true,20
50,'NULL',NULL,20
60,'NULL',true,20
60,'NULL',NULL,20
70,'NULL',true,20
70,'NULL',NULL,20
80,'NULL',true,20
80,'NULL',NULL,20
90,'NULL',true,20
90,'NULL',NULL,20
100,'NULL',true,20
100,'NULL',NULL,20
---- TYPES
INT,STRING,BOOLEAN,BIGINT
====
---- QUERY
# Output should contain a row for both the NULL value in
# int_col and the rollup of all values in int_col.
select year, int_col, count(*)
from alltypesagg
group by rollup(year, int_col)
order by 2 desc, 1, 3
limit 10
---- RESULTS
2010,NULL,20
2010,NULL,11000
NULL,NULL,11000
2010,999,10
2010,998,10
2010,997,10
2010,996,10
2010,995,10
2010,994,10
2010,993,10
---- TYPES
INT, INT, BIGINT
====
---- QUERY
# Output should contain a row for both the NULL value in
# int_col and the rollup of all values in int_col.
select year, int_col, count(*)
from alltypesagg
group by rollup(year, int_col)
having int_col is NULL
---- RESULTS
NULL,NULL,11000
2010,NULL,20
2010,NULL,11000
---- TYPES
INT, INT, BIGINT
====
---- QUERY
# Correlated subquery with rollup. Results are the same as
# if rollup was not present.
select id
from functional.alltypesagg a
where exists
(select id
from functional.alltypestiny b
where a.tinyint_col = b.tinyint_col and a.string_col = b.string_col
group by rollup(id, int_col, bool_col))
and tinyint_col < 10
---- RESULTS
1
1001
2001
3001
4001
5001
6001
7001
8001
9001
---- TYPES
INT
====
---- QUERY
# Test grouping() and grouping_id() on a table with null values.
select
grouping_id(),
grouping(int_col % 2),
grouping(substring(string_col, 1, 1)),
grouping(bool_col),
int_col % 2 i,
substring(string_col, 1, 1) str,
bool_col,
count(*)
from alltypesagg
group by cube(i, str, bool_col)
order by grouping_id() desc, i, str, bool_col
---- RESULTS
7,1,1,1,NULL,'NULL',NULL,11000
6,1,1,0,NULL,'NULL',false,5000
6,1,1,0,NULL,'NULL',true,6000
5,1,0,1,NULL,'0',NULL,20
5,1,0,1,NULL,'1',NULL,1220
5,1,0,1,NULL,'2',NULL,1220
5,1,0,1,NULL,'3',NULL,1220
5,1,0,1,NULL,'4',NULL,1220
5,1,0,1,NULL,'5',NULL,1220
5,1,0,1,NULL,'6',NULL,1220
5,1,0,1,NULL,'7',NULL,1220
5,1,0,1,NULL,'8',NULL,1220
5,1,0,1,NULL,'9',NULL,1220
4,1,0,0,NULL,'0',true,20
4,1,0,0,NULL,'1',false,560
4,1,0,0,NULL,'1',true,660
4,1,0,0,NULL,'2',false,550
4,1,0,0,NULL,'2',true,670
4,1,0,0,NULL,'3',false,560
4,1,0,0,NULL,'3',true,660
4,1,0,0,NULL,'4',false,550
4,1,0,0,NULL,'4',true,670
4,1,0,0,NULL,'5',false,560
4,1,0,0,NULL,'5',true,660
4,1,0,0,NULL,'6',false,550
4,1,0,0,NULL,'6',true,670
4,1,0,0,NULL,'7',false,560
4,1,0,0,NULL,'7',true,660
4,1,0,0,NULL,'8',false,550
4,1,0,0,NULL,'8',true,670
4,1,0,0,NULL,'9',false,560
4,1,0,0,NULL,'9',true,660
3,0,1,1,0,'NULL',NULL,5980
3,0,1,1,1,'NULL',NULL,5000
3,0,1,1,NULL,'NULL',NULL,20
2,0,1,0,0,'NULL',true,5980
2,0,1,0,1,'NULL',false,5000
2,0,1,0,NULL,'NULL',true,20
1,0,0,1,0,'1',NULL,660
1,0,0,1,0,'2',NULL,670
1,0,0,1,0,'3',NULL,660
1,0,0,1,0,'4',NULL,670
1,0,0,1,0,'5',NULL,660
1,0,0,1,0,'6',NULL,670
1,0,0,1,0,'7',NULL,660
1,0,0,1,0,'8',NULL,670
1,0,0,1,0,'9',NULL,660
1,0,0,1,1,'1',NULL,560
1,0,0,1,1,'2',NULL,550
1,0,0,1,1,'3',NULL,560
1,0,0,1,1,'4',NULL,550
1,0,0,1,1,'5',NULL,560
1,0,0,1,1,'6',NULL,550
1,0,0,1,1,'7',NULL,560
1,0,0,1,1,'8',NULL,550
1,0,0,1,1,'9',NULL,560
1,0,0,1,NULL,'0',NULL,20
0,0,0,0,0,'1',true,660
0,0,0,0,0,'2',true,670
0,0,0,0,0,'3',true,660
0,0,0,0,0,'4',true,670
0,0,0,0,0,'5',true,660
0,0,0,0,0,'6',true,670
0,0,0,0,0,'7',true,660
0,0,0,0,0,'8',true,670
0,0,0,0,0,'9',true,660
0,0,0,0,1,'1',false,560
0,0,0,0,1,'2',false,550
0,0,0,0,1,'3',false,560
0,0,0,0,1,'4',false,550
0,0,0,0,1,'5',false,560
0,0,0,0,1,'6',false,550
0,0,0,0,1,'7',false,560
0,0,0,0,1,'8',false,550
0,0,0,0,1,'9',false,560
0,0,0,0,NULL,'0',true,20
---- TYPES
BIGINT, TINYINT, TINYINT, TINYINT, INT, STRING, BOOLEAN, BIGINT
====
---- QUERY
# Test grouping_id() with different argument list order and length
select
grouping_id(bool_col, string_col, int_col),
grouping_id(bool_col),
int_col,
string_col,
bool_col,
count(*)
from alltypestiny
group by rollup(int_col, string_col, bool_col)
---- RESULTS
6,1,0,'NULL',NULL,4
0,0,1,'1',false,4
7,1,NULL,'NULL',NULL,8
4,1,0,'0',NULL,4
4,1,1,'1',NULL,4
0,0,0,'0',true,4
6,1,1,'NULL',NULL,4
---- TYPES
BIGINT, BIGINT, INT, STRING, BOOLEAN, BIGINT
====
---- QUERY
# Test grouping() and grouping_id() with a single grouping set.
select
grouping_id(int_col, string_col),
grouping(int_col),
grouping(string_col),
int_col,
string_col,
count(*)
from alltypestiny
group by grouping sets((int_col, string_col))
---- RESULTS
0,0,0,1,'1',4
0,0,0,0,'0',4
---- TYPES
BIGINT, TINYINT, TINYINT, INT, STRING, BIGINT
====
---- QUERY
# Test grouping() and grouping_id() with plain GROUP BY, where they always
# return 0.
select
grouping_id(int_col, string_col),
grouping_id(),
grouping(int_col),
grouping(string_col),
int_col,
string_col,
count(*)
from alltypestiny
group by int_col, string_col
---- RESULTS
0,0,0,0,1,'1',4
0,0,0,0,0,'0',4
---- TYPES
BIGINT, BIGINT, TINYINT, TINYINT, INT, STRING, BIGINT
====
---- QUERY
# Test grouping() and grouping_id() with plain GROUP BY and multiple aggregation
# classes from the distinct aggregate functions. They always return 0 in this
# case.
select
grouping_id(int_col, string_col),
grouping(int_col),
grouping(string_col),
int_col,
string_col,
count(distinct tinyint_col),
count(distinct timestamp_col)
from alltypestiny
group by int_col, string_col
---- RESULTS
0,0,0,1,'1',1,4
0,0,0,0,'0',1,4
---- TYPES
BIGINT, TINYINT, TINYINT, INT, STRING, BIGINT, BIGINT
====