मैं एक तेज़ तरीका प्रस्तावित करता हूँ।
पंक्ति गणना प्राप्त करें:
SELECT CEIL(COUNT(*)/2) FROM data;
फिर मध्य मान को क्रमबद्ध सबक्वेरी में लें:
SELECT max(val) FROM (SELECT val FROM data ORDER BY val limit @middlevalue) x;
मैंने यादृच्छिक संख्याओं के 5x10e6 डेटासेट के साथ इसका परीक्षण किया और यह 10 सेकंड के भीतर माध्यिका को खोज लेगा।
यह COUNT(*)/2
. की जगह एक मनमाना शतमक प्राप्त करेगा COUNT(*)*n
. के साथ जहां n
पर्सेंटाइल है (.5 माध्यिका के लिए, .75वें पर्सेंटाइल के लिए 75, आदि)।