У меня есть набор данных, который состоит из периодически собираемых значений.Я хочу вычислить медиану, используя 2 левых и правых соседа текущего значения для каждого элемента набора.
Например, набор:
21
22
23
-10
20
22
19
21
100
20
Для первого значения, которое мы выбираем21
, 22
, 23
, медиана которых равна 22
.Так что для 21
у нас есть 22
.Для -10
имеем 22
, 23
, -10
, 20
, 22
.Медиана равна 22
.
. Я использую этот метод, чтобы избавиться от «отклоняющихся» значений, которые являются ненормальными для этого набора.Примерно так:
SELECT (SELECT median(d.value)
FROM my_set d
WHERE d.key_val = s.key_val
AND d.order_value BETWEEN s.order_value - 2 AND s.order_value + 2) median_val
,s.key_val
,s.order_value
FROM my_set s
Я был бы рад увидеть любые другие подходы или некоторые улучшенные подходы для решения этого вопроса.