我的表tbl_data(event_time,monitor_id,type,event_date,status)
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
这个查询结果给出了单个monitor_id的正确答案,现在我需要多个monitor_id,
如何在单个/同一个查询中实现它?
答案 0 :(得分:0)
通常,这可以通过条件表达式来实现。像SELECT ...,if(monitor_id = 1, status, NULL) AS status1,...
一样,然后执行您可能知道的,跳过NULL值的聚合函数。但是我进行了一些测试,结果发现由于Clickhouse内部runningDifference()
无法区分源自同一来源的列。同时,它很好地区分了来自不同来源的列。这是一个错误。
我在Github上发布了一个问题:https://github.com/yandex/ClickHouse/issues/2590
更新:开发人员的反应异常迅速,使用master
的最新消息,您可以通过我描述的策略获得想要的东西。请参见问题以获取代码示例。