Давайте попробуем это, чтобы вычислить средний курс :
SELECT topic,
argMax(count, dt) - argMin(count, dt) AS f_delta,
max(dt) - min(dt) AS dt_delta,
(dt_delta > 0 ? f_delta / dt_delta : 0) AS avg_rate
FROM (
/* test data */
SELECT data.1 topic, toDate(data.2) dt, data.3 count
FROM (
SELECT arrayJoin([
('a', '2020-03-05', 10),
('b', '2020-03-05', 5),
('c', '2020-03-05', 7),
('a', '2020-03-04', 9),
('b', '2020-03-04', 6),
('c', '2020-03-04', 1),
('a', '2020-03-03', 10),
('b', '2020-03-03', 5),
('c', '2020-03-03', 1)]) data))
GROUP BY topic;
/*
┌─topic─┬─f_delta─┬─dt_delta─┬─avg_rate─┐
│ b │ 0 │ 2 │ 0 │
│ c │ 6 │ 2 │ 3 │
│ a │ 0 │ 2 │ 0 │
└───────┴─────────┴──────────┴──────────┘
*/