私はデータベースからいくつかのクエリを実行してグラフを作成しています。必要なグラフは月ごとの値の中央値です。私は私たちのデータ全体の中央値を取得する方法を知っていますが、何らかの理由で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
感謝したいと思います。
EDIT:現在のクエリ
は、これは私が全体の中央値を取得するには、今使っているクエリです、私は毎月、それを取得し、これを変換する方法を確認していません。
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はどのようにして集計関数を提供していませんか(GROUP BYを使用して暗示したように) – Vlad
今は、ネストされた選択を使用してデータセット全体の中央値を取得しようとしています。私が本当に好きなのは、1か月あたりのデータの中央値です。上で編集してクエリを投稿してください。 –