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()子句,將資料按一小時彙總。它包含一個明確的時間區間,如果沒有它,彙總函式是非常耗費資源的。