1

cron ジョブとして 1 時間ごとにこれらの項目を説明するレコードを挿入することで、いくつかの項目を追跡しています。

私はテーブルを持っています

steamid(int),
eventid(auto_increment),
itemid(int),
value(int),
time(unix format).

1 時間ごとの統計を使用して、24 時間の概要を示すグラフを生成しています。

現在、7 日間の履歴ビューを生成しようとしています。

過去 7 日間、毎日発生する最大値を選択するにはどうすればよいですか?

または、これがより簡単な場合、過去 7 日間の各日の最初または最後のエントリを選択するにはどうすればよいでしょうか?

前もって感謝します。

4

1 に答える 1

4
SELECT   DATE(FROM_UNIXTIME(time)) AS daygroup, 
         MAX(value) AS max_value, 
         MIN(value) AS min_value
FROM     tbl
WHERE    time >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 7 DAY)
GROUP BY daygroup

valueこれにより、過去7日間の各日の最小値と最大値が取得されます。

編集:行全体のデータを取得するようにソリューションを更新しました:

SELECT a.*
FROM tbl a
INNER JOIN
(
    SELECT   DATE(FROM_UNIXTIME(time)) AS daygroup, 
             MAX(value) AS max_value 
    FROM     tbl
    WHERE    time >= UNIX_TIMESTAMP(CURDATE() - INTERVAL 7 DAY)
    GROUP BY daygroup
) b ON DATE(FROM_UNIXTIME(a.time)) = b.daygroup AND a.value = b.max_value
于 2012-07-24T22:12:39.123 に答える