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