मुझे आशा है कि मैंने खुद को ढीला नहीं किया और चीजों को जटिल नहीं किया, लेकिन यहाँ मैं इसके साथ आया हूँ:
SELECT sq.created_at, avg(sq.price) as median_val FROM (
SELECT t1.row_number, t1.price, t1.created_at FROM(
SELECT IF(@prev!=d.created_at, @rownum:=1, @rownum:[email protected]+1) as `row_number`, d.price, @prev:=d.created_at AS created_at
FROM mediana d, (SELECT @rownum:=0, @prev:=NULL) r
ORDER BY created_at, price
) as t1 INNER JOIN
(
SELECT count(*) as total_rows, created_at
FROM mediana d
GROUP BY created_at
) as t2
ON t1.created_at = t2.created_at
WHERE 1=1
AND t1.row_number>=t2.total_rows/2 and t1.row_number<=t2.total_rows/2+1
)sq
group by sq.created_at
मैंने यहां जो किया, वह मुख्य रूप से केवल पंक्ति संख्या को 1 पर रीसेट करने के लिए है जब तिथि बदलती है (यह create_at द्वारा ऑर्डर करना महत्वपूर्ण है) और इसमें तिथि शामिल है ताकि हम इसके द्वारा समूह बना सकें। कुल पंक्तियों की गणना करने वाली क्वेरी में मैंने create_at को भी शामिल किया है, ताकि हम दो उपश्रेणियों में शामिल हो सकें।