-- { echo } select x3, x2, x1 from test order by 1; 1 100 100 10 1 10 100 10 1 select x3, x2, x1 from test order by x3; 1 100 100 10 1 10 100 10 1 select x3, x2, x1 from test order by 1 desc; 100 10 1 10 1 10 1 100 100 select x3, x2, x1 from test order by x3 desc; 100 10 1 10 1 10 1 100 100 insert into test values (1, 10, 100), (10, 1, 10), (100, 100, 1); select x3, x2 from test group by x3, x2; 10 1 1 100 100 10 select x3, x2 from test group by 1, 2; 10 1 1 100 100 10 select x1, x2, x3 from test order by x3 limit 1 by x3; 100 100 1 10 1 10 1 10 100 select x1, x2, x3 from test order by 3 limit 1 by 3; 100 100 1 10 1 10 1 10 100 select x1, x2, x3 from test order by x3 limit 1 by x1; 100 100 1 10 1 10 1 10 100 select x1, x2, x3 from test order by 3 limit 1 by 1; 100 100 1 10 1 10 1 10 100 explain syntax select x3, x2, x1 from test order by 1; SELECT x3, x2, x1 FROM test ORDER BY x3 ASC explain syntax select x3 + 1, x2, x1 from test order by 1; SELECT x3 + 1, x2, x1 FROM test ORDER BY x3 + 1 ASC explain syntax select x3, x3 - x2, x2, x1 from test order by 2; SELECT x3, x3 - x2, x2, x1 FROM test ORDER BY x3 - x2 ASC explain syntax select x3, if(x3 > 10, x3, plus(x1, x2)), x1 + x2 from test order by 2; SELECT x3, if(x3 > 10, x3, x1 + x2), x1 + x2 FROM test ORDER BY if(x3 > 10, x3, x1 + x2) ASC explain syntax select max(x1), x2 from test group by 2 order by 1, 2; SELECT max(x1), x2 FROM test GROUP BY x2 ORDER BY max(x1) ASC, x2 ASC explain syntax select 1 + greatest(x1, 1), x2 from test group by 1, 2; SELECT 1 + greatest(x1, 1), x2 FROM test GROUP BY 1 + greatest(x1, 1), x2 select max(x1), x2 from test group by 1, 2; -- { serverError 43 } select 1 + max(x1), x2 from test group by 1, 2; -- { serverError 43 } explain syntax select x1 + x3, x3 from test group by 1, 2; SELECT x1 + x3, x3 FROM test GROUP BY x1 + x3, x3 create table test2(x1 Int, x2 Int, x3 Int) engine=Memory; insert into test2 values (1, 10, 100), (10, 1, 10), (100, 100, 1); select x1, x1 * 2, max(x2), max(x3) from test2 group by 2, 1, x1 order by 1, 2, 4 desc, 3 asc; 1 2 10 100 10 20 1 10 100 200 100 1 select a, b, c, d, e, f from (select 44 a, 88 b, 13 c, 14 d, 15 e, 16 f) t group by 1,2,3,4,5,6; 44 88 13 14 15 16 explain syntax select plus(1, 1) as a group by a; SELECT 1 + 1 AS a GROUP BY a select substr('aaaaaaaaaaaaaa', 8) as a group by a; aaaaaaa select substr('aaaaaaaaaaaaaa', 8) as a group by substr('aaaaaaaaaaaaaa', 8); aaaaaaa select b from (select 5 as a, 'Hello' as b order by a); Hello select b from (select 5 as a, 'Hello' as b group by a); Hello select b from (select 5 as a, 'Hello' as b order by 1); Hello drop table if exists tp2; create table tp2(first_col String, second_col Int32) engine = MergeTree() order by tuple(); select count(*) from (select first_col, count(second_col) from tp2 group by 1); 0 select total from (select first_col, count(second_col) as total from tp2 group by 1); drop table if exists test; create table test ( `id` UInt32, `time` UInt32, index `id` (`id`) type set(0) granularity 3, index `time` (`time`) type minmax granularity 3 ) engine = MergeTree() order by (`time`); select count(*) as `value`, 0 as `data` from test group by `data`; drop table test;