我正在尝试为MySQL 制定一条SQL 语句。我有一系列服务器的一系列统计数据,每半小时报告一次。我有一个统计表,其中的列与此类似:
server varchar(64),
time datetime,
bytesIn int,
bytesOut int
现在,我想生成一系列报告,整理所有服务器上 1 小时或 1 天时间段内的所有 bytesIn 和 bytesOut。
IE。我知道我需要 SUM(bytesIn) 作为 bytesIn,SUM(bytesOut) 作为 bytesOut,但不知道如何将所有时间“聚集”到每小时/每日存储桶中,并返回“聚集”时间。
也就是说,返回的数据应该如下所示:
Time,bytesIn,bytesOut
12:00,1024,2048
13:00,4096,8192
etc
我知道这应该很简单,但我迷路了。有人可以帮忙吗?
也许你可以使用日期格式() http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format功能、分组。这是一个示例,希望您可以适应您的具体需求。
SELECT
DATE_FORMAT( time, "%H:%i" ),
SUM( bytesIn ),
SUM( butesOut )
FROM
stats
WHERE
time BETWEEN <start> AND <end>
GROUP BY
DATE_FORMAT( time, "%H:%i" )
如果您的时间窗口涵盖超过一天,并且您使用示例格式,则不同日期的数据将聚合到“一天中的一小时”存储桶中。如果原始数据不完全符合小时,您可以使用以下方法来平滑它"%H:00"
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)