DROP TABLE IF EXISTS t_02147; DROP TABLE IF EXISTS t_02147_dist; DROP TABLE IF EXISTS t_02147_merge; CREATE TABLE t_02147 (date DateTime, v UInt32) ENGINE = MergeTree ORDER BY toStartOfHour(date); CREATE TABLE t_02147_dist AS t_02147 ENGINE = Distributed(test_shard_localhost, currentDatabase(), t_02147); CREATE TABLE t_02147_merge AS t_02147 ENGINE = Merge(currentDatabase(), 't_02147'); SET optimize_monotonous_functions_in_order_by = 1; EXPLAIN SYNTAX SELECT * FROM t_02147 ORDER BY toStartOfHour(date), v; EXPLAIN SYNTAX SELECT * FROM t_02147_dist ORDER BY toStartOfHour(date), v; EXPLAIN SYNTAX SELECT * FROM t_02147_merge ORDER BY toStartOfHour(date), v; drop table t_02147; CREATE TABLE t_02147 (date DateTime, v UInt32) ENGINE = MergeTree ORDER BY date; select *, toString(t.v) as s from t_02147_merge as t order by date, s;