計算查詢中的百分比
更新時間:
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()
子句,將數據按一小時聚合。它包含一個明確的時間區間,如果沒有它,聚合函數是非常耗費資源的。
文檔內容是否對您有幫助?