Я хотел бы найти среднее из верхних 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