clickhouse - 如何计算一个话题在一段时间内的趋势率?
问题描述
在此表中,每个主题都有一个日期和重复次数。如何找到一段时间内增长最快的话题?(不是重复次数最多的主题)
topic dt Count
"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
例如,在给定的表中,“c”的趋势最高。
提前致谢。
解决方案
让我们试试这个来计算平均费率:
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 │
└───────┴─────────┴──────────┴──────────┘
*/
推荐阅读
- python - 尝试在格斗游戏中添加眩晕计时器作为未命中的惩罚
- uno-platform - Uno 材料卡格式化
- java - java.lang.IllegalStateException: java.lang.ClassNotFoundException: org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry
- java - 与 TCP 客户端连接时,简单的 Grizzly Echo 服务器无法正常工作
- google-sheets - 您可以在 Google 表格中制作 1 = 2 吗?
- github - GitHub 流量洞察可靠吗?
- python - 在 df 中转换 NaN 值时,第 25 个百分位选项是什么?
- java - 我有两个不同的列表视图活动
- python - pytest 无法在 VSCode 中发现测试
- javascript - 如何在 Vue 中渲染图表数据集?