2011-12-16 13 views
6

के साथ PostgreSQL समेकन मैं PostgreSQL (या तो 8.4 या 9.1) में समेकन बनाने के लिए अपने सिर को लपेटने की कोशिश कर रहा हूं जो एक या अधिक विकल्प पैरामीटर स्वीकार करता है।एकाधिक पैरामीटर

एक उदाहरण के साथ पी-वें क्वांटाइल की गणना करने के लिए PL/R एक्सटेंशन बना देगा। यह quantile(x,p) कुछ इस प्रकार दिखाई, और एक प्रश्न के भाग के रूप होगा:

select category,quantile(x,0.25) 
from TABLE 
group by category 
order by category; 

कहाँ TABLE (category:text, x:float)

सुझाव?

उत्तर

5

उम्मीद है कि यह उदाहरण मदद करेगा। आपको एक ऐसे फ़ंक्शन की आवश्यकता है जो (संचयक, कुल-तर्क) लेता है और नया संचयक मूल्य देता है। नीचे दिए गए कोड के साथ खेलें और आपको यह महसूस करना चाहिए कि यह सब एक साथ कैसे फिट बैठता है।

BEGIN; 

CREATE FUNCTION sum_product_fn(int,int,int) RETURNS int AS $$ 
    SELECT $1 + ($2 * $3); 
$$ LANGUAGE SQL;   

CREATE AGGREGATE sum_product(int, int) (
    sfunc = sum_product_fn, 
    stype = int, 
    initcond = 0 
); 

SELECT 
    sum(i) AS one,  
    sum_product(i, 2) AS double, 
    sum_product(i,3) AS triple 
FROM generate_series(1,3) i; 

ROLLBACK;  

है कि आप की तरह कुछ देना चाहिए:

one | double | triple 
-----+--------+-------- 
    6 |  12 |  18 
3

यह ntile विंडोइंग समारोह

-- To calculate flexible quantile ranges in postgresql, for example to calculate n equal 
-- frequency buckets for your data for use in a visualisation (such as binning for a 
-- choropleth map), you can use the following SQL: 

-- this functions returns 6 equal frequency bucket ranges for my_column. 
SELECT ntile, avg(my_column) AS avgAmount, max(my_column) AS maxAmount, min(my_column) AS  minAmount 
FROM (SELECT my_column, ntile(6) OVER (ORDER BY my_column) AS ntile FROM my_table) x 
GROUP BY ntile ORDER BY ntile 

आपको कम से ntile() फ़ंक्शन और विंडोइंग के बारे में अधिक प्राप्त कर सकते हैं के साथ प्राप्त किया जा सकता http://database-programmer.blogspot.com/2010/11/really-cool-ntile-window-function.html

+0

बढ़िया! धन्यवाद! – alfonx

+0

डाउनवोट क्योंकि, यह क्वार्टाइल श्रेणियों की गणना के लिए निश्चित रूप से उपयोगी है, सवाल कुल कार्यों को बनाने से संबंधित है। –

संबंधित मुद्दे