2010-10-31 14 views
6

में संख्याओं के एक सेट के औसत पूर्ण विचलन का मूल्यांकन करना मैं संख्याओं के एक समूह के median absolute deviation का मूल्यांकन करने के लिए एक प्रक्रिया को लागू करने की कोशिश कर रहा हूं (आमतौर पर ग्रुप बाय क्लॉज के माध्यम से प्राप्त होता है)।ओरेकल

एक प्रश्न जहां मैं इस का उपयोग करना चाहते का एक उदाहरण है:

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