小编典典

将统计信息整理成时间块

sql

我正在尝试制定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

我知道这应该很简单,但我迷路了。有人可以帮忙吗?


阅读 249

收藏
2021-04-28

共1个答案

小编典典

也许您可以使用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"

2021-04-28