2017-07-25 14:05:02 +00:00
|
|
|
SELECT '*** In-memory aggregation.';
|
|
|
|
|
2015-01-15 19:37:44 +00:00
|
|
|
SET max_rows_to_group_by = 100000;
|
|
|
|
SET max_block_size = 100001;
|
|
|
|
SET group_by_overflow_mode = 'any';
|
|
|
|
|
2021-05-13 09:06:59 +00:00
|
|
|
-- 'any' overflow mode might select different values for two-level and
|
|
|
|
-- single-level GROUP BY, so we set a big enough threshold here to ensure that
|
|
|
|
-- the switch doesn't happen, we only use single-level GROUP BY and get a
|
|
|
|
-- predictable result.
|
|
|
|
SET group_by_two_level_threshold_bytes = 100000000;
|
|
|
|
SET group_by_two_level_threshold = 1000000;
|
|
|
|
|
2017-07-25 14:05:02 +00:00
|
|
|
SELECT '**** totals_mode = after_having_auto';
|
|
|
|
SET totals_mode = 'after_having_auto';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
|
|
|
SELECT '**** totals_mode = after_having_inclusive';
|
|
|
|
SET totals_mode = 'after_having_inclusive';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
|
|
|
SELECT '**** totals_mode = after_having_exclusive';
|
|
|
|
SET totals_mode = 'after_having_exclusive';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
|
|
|
SELECT '**** totals_mode = before_having';
|
|
|
|
SET totals_mode = 'before_having';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
|
|
|
|
|
|
|
SELECT '*** External aggregation.';
|
|
|
|
|
2022-09-15 10:19:39 +00:00
|
|
|
SET max_bytes_before_external_group_by = 1000000;
|
2017-07-25 14:05:02 +00:00
|
|
|
SET group_by_two_level_threshold = 100000;
|
|
|
|
|
|
|
|
SELECT '**** totals_mode = after_having_auto';
|
2015-01-15 19:37:44 +00:00
|
|
|
SET totals_mode = 'after_having_auto';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
2017-07-25 14:05:02 +00:00
|
|
|
SELECT '**** totals_mode = after_having_inclusive';
|
2015-01-15 19:37:44 +00:00
|
|
|
SET totals_mode = 'after_having_inclusive';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
2017-07-25 14:05:02 +00:00
|
|
|
SELECT '**** totals_mode = after_having_exclusive';
|
2015-01-15 19:37:44 +00:00
|
|
|
SET totals_mode = 'after_having_exclusive';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|
|
|
|
|
2017-07-25 14:05:02 +00:00
|
|
|
SELECT '**** totals_mode = before_having';
|
2015-01-15 19:37:44 +00:00
|
|
|
SET totals_mode = 'before_having';
|
|
|
|
SELECT intDiv(number, 2) AS k, count(), argMax(toString(number), number) FROM (SELECT number FROM system.numbers LIMIT 500000) GROUP BY k WITH TOTALS ORDER BY k LIMIT 10;
|