评估Oracle中一组数字的平均绝对偏差

时间:2010-10-31 22:33:58

标签: sql oracle aggregate

我正在尝试实现一个过程来评估一组数字的median absolute deviation(通常通过GROUP BY子句获得)。

我想要使用它的查询示例是:

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

我要使用聚合函数example但是有点困惑,因为函数需要在所有迭代完成之前知道所有数字的中位数。

非常感谢任何有关如何实现此类功能的指示。

1 个答案:

答案 0 :(得分:11)

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