我每天都有一套设备数据和我的应用程序的(非)安装数量。
示例数据为:
time | device_name | daily_installs | daily_uninstall
t1 | device1 | 0 | 1
t1 | device2 | 2 | 0
t2 | device2 | 2 | 0
t2 | device3 | 12 | 0
我可以按照device_name对它们进行分组,并按月(或任何其他范围)获取我的安装总数。
但是设备数量巨大,因此我只想过滤前十名。
如何使用InfluxDB实现这一目标?
答案 0 :(得分:7)
版本1.3.4
SELECT top(monthly_uninstalls,device_name,10)
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)
请注意,语法为" top(" field_name"," tag"," topN")来自....&#34 ;
答案 1 :(得分:5)
答案取决于您使用的InfluxDB版本。
选择每月计数到新测量值
SELECT count(daily_uninstall) as monthly_uninstall
INTO newmeasurement
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name
从新测量中选择前10个结果
SELECT top(monthly_uninstall, 10), device_name
FROM newmeasurement
在InfluxDB的1.2+版本中,您可以使用子查询在一个步骤中完成此操作。
SELECT top(monthly_uninstalls,10), device_name
FROM (SELECT count(daily_uninstall) as monthly_uninstall
FROM mymeasurement
WHERE time > now() - 4w
GROUP BY device_name)