Я делаю несколько запросов из базы данных для построения графиков, и график, который может понадобиться, представляет собой медиану набора значений в месяц. Я знаю, как получить медиану всего набора наших данных, но по какой-то причине я не могу заставить GROUP BY MONTH (..) разделять месяцы, чтобы он возвращал медиану за месяц.
Вот данные, которые у меня есть, и я хотел бы за каждый месяц получать медиану за каждый месяц независимо от типа сборки.
'Development', 1013.0164, 'June'
'Development', 1170.8999, 'July'
'Development', 671.2837, 'August'
'Flash Assets', 2961.3832, 'June'
'Flash Assets', 6662.2335, 'July'
'Flash Assets', 3902.5000, 'August'
'Release', 54.5499, 'June'
'Release', 62.4832, 'July'
'Release', 398.8500, 'August'
'Repackage', 1360.0834, 'June'
'Repackage', 6286.8505, 'July'
'Repackage', 1274.7833, 'August'
'Component', 16378.0161, 'June'
'Component', 6063.5482, 'July'
'Component', 23663.2496, 'August'
'Source Diff', 1503.8834, 'June'
'Source Diff', 1051.4500, 'July'
'Source Diff', 73.7002, 'August'
Я бы хотел закончить с этим,
June, XXXX
July, XXXX
August, XXXX
Спасибо.
РЕДАКТИРОВАТЬ: текущий запрос
Это запрос, который я использую сейчас, чтобы получить общую медиану, я не уверен, как перевести это на получение его в месяц.
SELECT t.Data AS 'Median' FROM
(SELECT CEIL(COUNT(*)/2.0) as 'Middle', s.Data as 'Data' FROM
(SELECT bt.name as 'Labels',
SUM(TIME_TO_SEC(TIMEDIFF(bs.eventtime, b.submittime))/60.0)
AS 'Data', MONTHNAME(b.submittime) FROM builds b
JOIN buildstatuses bs ON bs.buildid = b.id
JOIN buildtypes bt ON bt.id = b.buildtype
WHERE MONTH(b.submittime) BETWEEN MONTH(CURDATE())-2 AND MONTH(CURDATE())
AND bs.status LIKE 'Started HANDLER'
GROUP BY b.buildtype, MONTH(b.submittime) ORDER BY 'Data' ) s )t;