【发布时间】:2011-05-03 04:54:54
【问题描述】:
我正在尝试实现一个过程来评估一组数字的median absolute deviation(通常通过 GROUP BY 子句获得)。
我想使用的查询示例是:
select id, mad(values) from mytable group by id;
我将使用聚合函数example,但有点困惑,因为该函数需要在所有迭代完成之前知道所有数字的中位数。
任何关于如何实现这种功能的指针都将不胜感激。
【问题讨论】:
我正在尝试实现一个过程来评估一组数字的median absolute deviation(通常通过 GROUP BY 子句获得)。
我想使用的查询示例是:
select id, mad(values) from mytable group by id;
我将使用聚合函数example,但有点困惑,因为该函数需要在所有迭代完成之前知道所有数字的中位数。
任何关于如何实现这种功能的指针都将不胜感激。
【问题讨论】:
在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
【讨论】: