У меня есть вопрос, используя InfluxQL. (Как найти верх, низ и общее среднее значение) - PullRequest
0 голосов
/ 21 апреля 2020

Я хотел бы найти среднее из верхних 10%, нижних 10% и всего с наибольшей «скоростью» с шагом 5 минут.

Например, данные выглядят следующим образом:

name: measurement_test
time                  speed
2019-08-18T00:00:00Z  1250
2019-08-18T00:00:01Z  423
2019-08-18T00:00:02Z  4123
...(more 100,000 points)

Итак, я попробовал следующее и потерпел неудачу. Сложно. Пожалуйста, помогите.

Разве это невозможно с одним запросом?

СЛУЧАЙ, КОГДА Я не знал синтаксис хорошо, поэтому я написал его произвольно ...

SELECT CASE WHEN t_sub.type = "T" THEN avg(t_sub.speed) ELSE 0 END top_speed_avg,
  CASE WHEN t_sub.type = "B" THEN avg(t_sub.speed) ELSE 0 END bottom_speed_avg,
  avg(t_sub.speed) as total_speed_avg
FROM (
  SELECT PERCENTILE(avg(speed), 10) as top_ten,
    PERCENTILE(avg(speed), 90) as bottom_ten,
    CASE WHEN avg(speed) > top_ten THEN "T" ELSE
      (CASE WHEN avg(speed) < bottom_ten THEN "B" END)
    END type,
    avg(speed) as speed
  FROM measurement_test
  GROUP BY time(5m)
  ) t_sub
...