选择最近7天的最大值

时间:2012-07-24 22:08:33

标签: mysql

我通过每小时插入描述这些项目的记录作为一个cron作业来跟踪一些项目。

我有一张表

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

我正在使用每小时统计信息来生成图表以显示24小时的概述。

现在我正在尝试生成7天的历史视图。

如何选择过去7天内每天发生的最大值?

或者,如果这更容易,我怎么可能选择过去7天中每天的第一个或最后一个条目?

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

这将获得过去7天内每天value的最小值和最大值。

修改:更新了解决方案以获取整行的数据:

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