आप विंडो फ़ंक्शंस का उपयोग कर सकते हैं। मान लें कि यह एक संख्यात्मक मान है:
select cobrand_id, avg(xsum) as median
from (select m.*,
row_number() over (partition by cobrand_id order by xsum) as seqnum,
count(*) over (partition by cobrand_id) as cnt
from tmp_median m
) m
where 2*seqnum in (cnt, cnt + 1, cnt + 2)
group by cobrand_id;
where
खंड प्रत्येक cobrand_id
. के लिए पंक्तियों को 1 या 2 में फ़िल्टर करता है (ध्यान दें 2*
), इसलिए यह प्रत्येक विभाजन में सम और विषम दोनों संख्याओं के लिए कार्य करता है। इन मानों का औसत तब माध्यिका होता है।