我正在尝试实现一个过程来评估一组数字的median absolute deviation(通常通过GROUP BY子句获得)。
我想要使用它的查询示例是:
select id, mad(values) from mytable group by id;
我要使用聚合函数example但是有点困惑,因为函数需要在所有迭代完成之前知道所有数字的中位数。
非常感谢任何有关如何实现此类功能的指示。
答案 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