我通过每小时插入描述这些项目的记录作为 cron 作业来跟踪一些项目。
我有一张桌子
steamid(int),
eventid(auto_increment),
itemid(int),
value(int),
time(unix format).
我正在使用每小时统计数据生成一个图表来显示 24 小时概览。
现在我正在尝试生成一个 7 天的历史视图。
如何选择过去 7 天每天发生的最大值?
或者,如果这更容易,我怎么可能选择过去 7 天内每天的第一个或最后一个条目?
提前致谢。
我通过每小时插入描述这些项目的记录作为 cron 作业来跟踪一些项目。
我有一张桌子
steamid(int),
eventid(auto_increment),
itemid(int),
value(int),
time(unix format).
我正在使用每小时统计数据生成一个图表来显示 24 小时概览。
现在我正在尝试生成一个 7 天的历史视图。
如何选择过去 7 天每天发生的最大值?
或者,如果这更容易,我怎么可能选择过去 7 天内每天的第一个或最后一个条目?
提前致谢。
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