如何计算一个话题在一段时间内的趋势率?
Posted
技术标签:
【中文标题】如何计算一个话题在一段时间内的趋势率?【英文标题】:How to calculate the rate of a topic's trend in a period of time? 【发布时间】:2020-03-10 18:21:14 【问题描述】:在此表中,每个主题都有一个日期和重复次数。如何找到一段时间内增长最快的话题? (不是重复次数最多的话题)
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”的趋势是最高的。
提前致谢。
【问题讨论】:
【参考方案1】:让我们试试这个计算average rate:
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 │
└───────┴─────────┴──────────┴──────────┘
*/
【讨论】:
以上是关于如何计算一个话题在一段时间内的趋势率?的主要内容,如果未能解决你的问题,请参考以下文章
串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上
串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上