Оценка среднего абсолютного отклонения набора чисел в Oracle - PullRequest
7 голосов
/ 01 ноября 2010

Я пытаюсь реализовать процедуру для оценки медианного абсолютного отклонения набора чисел (обычно получаемого с помощью предложения GROUP BY).

Пример запроса, в котором я хотел бы использовать это:

select id, mad(values) from mytable group by id;

Я собираюсь использовать агрегатную функцию пример , но я немного запутался, поскольку функция должна знать медиану всех чисел, прежде чем все итерации будут выполнены.

Будем весьма благодарны за любые указания на то, как такая функция может быть реализована.

1 Ответ

11 голосов
/ 01 ноября 2010

В Oracle 10g+:

SELECT  MEDIAN(ABS(value - med))
FROM    (
        SELECT  value, MEDIAN(value) OVER() AS med
        FROM    mytable
        )

, или то же самое с GROUP BY:

SELECT  id, MEDIAN(ABS(value - med))
FROM    (
        SELECT  id, value, MEDIAN(value) OVER(PARTITION BY id) AS med
        FROM    mytable
        )
GROUP BY
        id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...