2010-10-31 46 views
6

我試圖執行一個程序來評估一組數字(通常通過GROUP BY子句獲得)的median absolute deviation評估Oracle中一組數字的平均絕對偏差

查詢,我想使用這個的一個例子是:

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

我集合函數example去,但我有點困惑,因爲函數需要知道所有的中位數所有迭代之前的數字都已完成。

任何指示如何實現這樣的功能將不勝感激。

回答

9

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 
相關問題