create table Speed Engine=Memory
as select number+1 X from numbers(10);
SELECT quantilesExact(0.25, 0.5, 0.75)(X)
FROM Speed
┌─quantilesExact(0.25, 0.5, 0.75)(X)─┐
│ [3,6,8] │
└────────────────────────────────────┘
SELECT arrayJoin(quantilesExact(0.25, 0.5, 0.75)(X)) AS q
FROM Speed
┌─q─┐
│ 3 │
│ 6 │
│ 8 │
└───┘
SELECT arrayJoin(quantilesExact(0.25, 0.499999999999, 0.75)(X)) AS q
FROM Speed
┌─q─┐
│ 3 │
│ 5 │
│ 8 │
└───┘
В CH realm Join не применяется, потому что обычно это миллиарды строк.
create table Speed Engine=MergeTree order by X as select number X from numbers(1000000000);
SELECT quantilesExact(0.25, 0.5, 0.75)(X)
FROM Speed
┌─quantilesExact(0.25, 0.5, 0.75)(X)─┐
│ [250000000,500000000,750000000] │
└────────────────────────────────────┘
1 rows in set. Elapsed: 7.974 sec. Processed 1.00 billion rows,
SELECT quantiles(0.25, 0.5, 0.75)(X)
FROM Speed
┌─quantiles(0.25, 0.5, 0.75)(X)────────┐
│ [244782599,500713390.5,751014086.75] │
└──────────────────────────────────────┘
1 rows in set. Elapsed: 1.274 sec. Processed 1.00 billion rows