如何选择包含事件的时间段数?

时间:2018-02-12 20:10:56

标签: influxdb

我正在尝试实施“按平台花费的时间”指标,按用户和日分组。

我的测试数据为两个用户中的每一个都有15个事件,这15个事件在三天内分开。但是,特定用户/日组合的五个事件都发生在完全相同的时刻,因此为了我的“花费时间”计算的目的,它们应该仅被计为单个“时间单位”。我将“时间单位”定义为至少包含用户事件的分钟。

到目前为止,这是我的尝试:

  

SELECT SUM(x)FROM(SELECT COUNT(score_value)as x FROM user_scores GROUP BY time(1m),user_id)GROUP BY time(1d),user_id

name: user_scores
tags: user_id=123
time                sum
----                ---
1518134400000000000 5
1518220800000000000 5
1518307200000000000 5
1518393600000000000

name: user_scores
tags: user_id=456
time                sum
----                ---
1518134400000000000 5
1518220800000000000 5
1518307200000000000 5

我可以看到这是预期的结果集,但它不是我正在寻找的数据。由于单个用户/天组合的五个事件中的每一个都在同一分钟发生,因此结果中的sum值应全部为1

所以,我需要一种方法将SELECT COUNT(score_value) as x FROM user_scores GROUP BY time(1m),user_id转换为返回0或1的内容,具体取决于该分钟内是否发生任何事件

1 个答案:

答案 0 :(得分:0)

我明白了,有效的方法如下:

  

SELECT COUNT(x)FROM(SELECT COUNT(score_value)as x FROM user_scores GROUP BY time(1m),user_id)WHERE x> 0 GROUP BY时间(1d),user_id

基本上我将外部SELECT SUM(x)更改为SELECT COUNT(x)并添加了where x > 0