Postgres में MEDIAN
. के लिए बिल्ट-इन एग्रीगेट फ़ंक्शन नहीं है . लेकिन, आप Postgres wiki में उपलब्ध फ़ंक्शन स्निपेट का उपयोग करके एक बना सकते हैं
. यह स्निपेट ulib_agg उपयोगकर्ता-निर्धारित लाइब्रेरी
का भी हिस्सा है। ।
एक बार यह बन जाने के बाद आप इसे SUM
. जैसे किसी भी समग्र कार्य की तरह उपयोग कर सकते हैं या STRING_AGG
समान window
. के साथ विशिष्टता। Postgres आपको अनेक window
. निर्दिष्ट करने का विकल्प प्रदान करता है अल्पविराम द्वारा अलग किए गए समग्र कार्यों की परिभाषा।
तो, एक MEDIAN
प्राप्त करने के लिए पिछले 20 रिकॉर्डों में से, आपकी विंडो को इस क्वेरी के रूप में परिभाषित किया जा सकता है।
SELECT
j.* , array_agg(position) over w as previous_positions,
median(position) over w_20 as med_20
FROM jockeys j
WINDOW w as
( partition by name ORDER BY id rows between
unbounded preceding and 1 preceding
),
w_20 as
( partition by name ORDER BY id rows between
20 preceding and 1 preceding
)
उसके ऊपर आप ROUND
. लागू कर सकते हैं यदि आप दशमलव अंकों को छोटा करना चाहते हैं तो कार्य करें।