我從數據庫做一些查詢,使圖形,以及可能需要一個圖是一組每月值的中值。我知道如何獲得整組數據的中位數,但由於某些原因,我無法獲得GROUP BY MONTH(..)來分隔月份,因此它會返回每月的中位數。MySQL的中值每月
這裏是我的數據,我想每個月拿到每個月的中值,無論構建類型。
'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;
最後一列是保存日期的字符串。我只是在這裏使用'MONTHNAME()'函數來顯示名稱 –
你如何得到中位數,AFAIK MySQL沒有爲此提供聚合函數(如你使用GROUP BY所暗示的那樣)? – Vlad
現在我正要通過使用嵌套選擇來獲取整個數據集的中位數。我真正喜歡的是每月數據的中位數。在上面編輯併發布查詢。 –