多个x值的运行差(x)

1mrurvl1  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(444)

我的表tbl\数据(事件\时间、监视器\ id、类型、事件\日期、状态)

select status,sum(runningDifference(event_time)) as delta from (SELECT status,event_date,event_time FROM tbl_data WHERE event_date >= '2018-05-01' AND monitor_id =3 ORDER BY event_time ASC) group by status

结果将是

status           delta
1               4665465
2                965

这个查询结果给了我一个监视器id的正确答案,现在我需要多个监视器id,
如何在单个/相同的查询中实现它??

gupuwyp2

gupuwyp21#

通常这是通过条件表达式实现的。就像 SELECT ...,if(monitor_id = 1, status, NULL) AS status1,... 然后你做你的聚合函数,你可能知道,跳过空值。但我做了一些测试,结果发现是因为clickhouse的内部结构 runningDifference() 无法区分来自同一源的列。同时,它可以很好地区分来自不同来源的列。它是一只虫子。
我在github上打开了一个问题:https://github.com/yandex/clickhouse/issues/2590
最新消息:开发人员的React非常快,而且有来自 master 你可以用我描述的策略得到你想要的。代码示例见问题。

相关问题