0

我的表 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,

如何在单个/相同查询中实现它?

4

1 回答 1

0

通常这是通过条件表达式来实现的。就像SELECT ...,if(monitor_id = 1, status, NULL) AS status1,...然后你做你的聚合函数,你可能知道,跳过 NULL 值。但我做了一些测试,结果发现由于 clickhouse 内部runningDifference()无法区分来自同一来源的列。同时,它可以很好地区分来自不同来源的列。这是一个错误。

我在 Github 上打开了一个问题:https ://github.com/yandex/ClickHouse/issues/2590

更新:开发人员的反应非常快,并且master您可以通过我描述的策略获得您想要的最新资源。有关代码示例,请参阅问题。

于 2018-07-04T07:32:34.820 回答