मारियाडीबी/माईएसक्यूएल में:
SELECT AVG(dd.val) as median_val
FROM (
SELECT d.val, @rownum:[email protected]+1 as `row_number`, @total_rows:[email protected]
FROM data d, (SELECT @rownum:=0) r
WHERE d.val is NOT NULL
-- put some where clause here
ORDER BY d.val
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );
स्टीव कोहेन बताते हैं, कि पहले पास के बाद, @rownum में पंक्तियों की कुल संख्या होगी। इसका उपयोग माध्यिका निर्धारित करने के लिए किया जा सकता है, इसलिए किसी दूसरे पास या शामिल होने की आवश्यकता नहीं है।
साथ ही AVG(dd.val)
और dd.row_number IN(...)
रिकॉर्ड की संख्या सम होने पर माध्यिका को सही ढंग से उत्पन्न करने के लिए उपयोग किया जाता है। तर्क:
SELECT FLOOR((3+1)/2),FLOOR((3+2)/2); -- when total_rows is 3, avg rows 2 and 2
SELECT FLOOR((4+1)/2),FLOOR((4+2)/2); -- when total_rows is 4, avg rows 2 and 3
अंत में, MariaDB 10.3.3+ में एक MEDIAN फ़ंक्शन शामिल है