文档

计算查询中的百分比

更新时间:
一键部署

InfluxQL允许您计算简单的数学方程式,这使得使用measurement中的两个field字段计算百分比非常简单。然而,有一些注意事项不能忽略。

查询中的基本计算

SELECT语句支持使用基本的运算符,例如:+-/*()等等。

-- 两个field key相加
SELECT field_key1 + field_key2 AS "field_key_sum" FROM "measurement_name" WHERE time < now() - 15m

-- 两个field key相减
SELECT field_key1 - field_key2 AS "field_key_difference" FROM "measurement_name" WHERE time < now() - 15m

-- 分组计算并将它们连接起来
SELECT (field_key1 + field_key2) - (field_key3 + field_key4) AS "some_calculation" FROM "measurement_name" WHERE time < now() - 15m

计算查询中的百分比

使用基本的数学函数,将两个field字段的值相除并将结果乘以100,您就可以计算出两个field的百分比:

SELECT (field_key1 / field_key2) * 100 AS "calculated_percentage" FROM "measurement_name" WHERE time < now() - 15m

使用聚合函数计算百分比

如果在百分比计算中使用聚合函数,那么查询中所有的数据都会用到聚合函数。您不能将聚合数据和非聚合数据混合在一起。

所有聚合函数都需要一个GROUP BY time()子句,用于定义数据点分组和聚合的时间区间。

SELECT (sum(field_key1) / sum(field_key2)) * 100 AS "calculated_percentage" FROM "measurement_name" WHERE time < now() - 15m GROUP BY time(1m)

示例

示例数据

以下示例使用模拟的Apple Stand数据,这些数据记录了在一整天的业务中,装着不同品种苹果的篮子的重量。

1. 下载示例数据

2. 导入示例数据。

influx -ssl -username <账号名称> -password <密码> -host <网络地址> -port 3242 -import -path=path/to/apple_stand.txt -database=apple_stand

计算每个品种占总重量的百分比

以下查询计算在每个给定的时间点,每个苹果品种占总重量的百分比。

SELECT
    ("braeburn"/total_weight)*100,
    ("granny_smith"/total_weight)*100,
    ("golden_delicious"/total_weight)*100,
    ("fuji"/total_weight)*100,
    ("gala"/total_weight)*100
FROM "apple_stand"."autogen"."variety"

计算每个品种的聚合百分比

以下查询计算每一个小时,每个苹果品种的平均重量占平均总重量的百分比。

SELECT
    (mean("braeburn")/mean(total_weight))*100,
    (mean("granny_smith")/mean(total_weight))*100,
    (mean("golden_delicious")/mean(total_weight))*100,
    (mean("fuji")/mean(total_weight))*100,
    (mean("gala")/mean(total_weight))*100
FROM "apple_stand"."autogen"."variety"
WHERE time >= '2018-06-18T12:00:00Z' AND time <= '2018-06-19T04:35:00Z'
GROUP BY time(1h)

关于以上查询,请注意:

  • 它使用聚合函数(mean())来提取所有数据。

  • 它包含一个GROUP BY time()子句,将数据按一小时聚合。

  • 它包含一个明确的时间区间,如果没有它,聚合函数是非常耗费资源的。

  • 本页导读 (1)
文档反馈