アクティブなユーザーの総数を毎日テーブルに書き込む cron スクリプトがあります。各月の「最高水準点」を表示する簡単なレポートを生成しようとしています。一部のアカウントはその月中に期限切れになるため、最大数が月末ではない可能性があります。
これが私のテーブル構造のサンプルです
tblUserLog
-----------
record_id INT(11) // PRIMARY KEY
run_date DATE // DATE RUN
ttl_count INT(11) // TOTAL FOR DAY
サンプルデータ:
record_id run_date ttl_count
1 2013-06-01 500
2 2013-06-10 510
3 2013-06-20 520
4 2013-06-30 515
5 2013-07-01 525
6 2013-07-10 530
7 2013-07-20 540
8 2013-07-31 550
9 2013-08-01 560
私が返したいのは:
record_id run_date ttl_count
3 2013-06-20 520
8 2013-07-31 550
9 2013-08-01 560
近い2つのクエリを試しました...
// This will give me the total for the first of the month
SELECT s.record_id, s.run_date, s.ttl_count
FROM tblStatsIndividual s
JOIN (
SELECT record_id
FROM tblStatsIndividual
GROUP BY DATE_FORMAT(run_date, '%Y %m')
HAVING MAX(ttl_count)
) s2
ON s2.record_id = s.record_id
ORDER BY run_date DESC
これは、record_id と合計の正しい日付とともに、各月の最初の合計を返します。
これを試した...
SELECT record_id,max(run_date), max(ttl)
FROM (
SELECT record_id,run_date, max(ttl_count) AS ttl
FROM tblStatsIndividual
GROUP BY DATE_FORMAT(run_date, '%Y %m')
) a
GROUP BY DATE_FORMAT(run_date, '%Y %m')
ORDER BY run_date DESC
これは正しい「最高水準点」を取得しているように見えますが、最高水準点である行の record_id または run_date を返しません。
最高合計の record_id と run_date を取得するにはどうすればよいですか?