SELECT 'totals';
SELECT number % 3 + 1 AS n, min(n), max(n) FROM numbers(100) GROUP BY n WITH TOTALS;
SELECT 'rollup';
SELECT number % 3 + 1 AS n, min(n), max(n) FROM numbers(100) GROUP BY n WITH ROLLUP;
SELECT 'cube';
SELECT number % 3 + 1 AS n, min(n), max(n) FROM numbers(100) GROUP BY n WITH CUBE;
SELECT '=======';

SELECT
    x,
    min(x) AS lower,
    max(x) + 1 AS upper,
    upper - lower AS range
FROM
(
    SELECT arrayJoin([1, 2]) AS x
) 
GROUP BY x WITH ROLLUP;
