MySQL:使用SQL很难计算出每天最忙的时间中“in_字节”最大的时间?

MySQL:使用SQL很难计算出每天最忙的时间中“in_字节”最大的时间?,mysql,hour,Mysql,Hour,目标:编写正确的SQL以解决以下问题 第1部分: 在计算SQL语句如何获取时间戳时遇到问题,该时间戳包括每天最大字节数的日期和小时。请参阅下面的视频表DDL代码。如果在给定的一天中有两个最大值具有相同的值,只需选择第一个。这些数据被绘制在图表中,因此每一天只能有一个数据点。您可以用一些示例数据填充表格 第2部分: 这个问题的另一部分是,一旦您拥有了每天的所有唯一最大in_字节,那么您需要将in_字节和out_字节相加以获得一条记录 要将UTC时间从数据库转换为本地时间,我们在查询中使用: SEL

目标:编写正确的SQL以解决以下问题

第1部分:

在计算SQL语句如何获取时间戳时遇到问题,该时间戳包括每天最大字节数的日期和小时。请参阅下面的视频表DDL代码。如果在给定的一天中有两个最大值具有相同的值,只需选择第一个。这些数据被绘制在图表中,因此每一天只能有一个数据点。您可以用一些示例数据填充表格

第2部分:

这个问题的另一部分是,一旦您拥有了每天的所有唯一最大in_字节,那么您需要将in_字节和out_字节相加以获得一条记录

要将UTC时间从数据库转换为本地时间,我们在查询中使用:

SELECT time_stamp,CONVERT_TZ(time_stamp, '+00:00', '-07:00' ) as localtime
以下是该表的DDL SQL:

CREATE TABLE video_hourly (
  id bigint(20) NOT NULL AUTO_INCREMENT,
  time_stamp datetime NOT NULL,
  in_bytes bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  out_bytes bigint(20) UNSIGNED NOT NULL DEFAULT 0,
  opt_pct decimal(11, 2) NOT NULL DEFAULT 0.00,
  PRIMARY KEY (id)
)
ENGINE = INNODB;
在此方面的任何帮助或建议都将不胜感激。谢谢大家!

查看您可以使用的函数列表。具体来说,您可以使用HOUR来获取HOUR值

还可以使用DATE获取datetime列的日期部分。一旦你有了这些,你可以把它们组合在一起。我会尽力帮你把它分解

这将按天和小时分组,返回该小时的日期、小时和单位字节

SELECT DATE(time_stamp) AS date, HOUR(time_stamp) AS hour, SUM(in_bytes) AS totalInBytes
FROM video_hourly
GROUP BY date, hour
ORDER BY date, hour, totalInBytes DESC;
这也会增加每个组顶部的最大totalInBytes,因为它按降序排列

另外,请参阅以了解如何获取组中的最大值,在本例中,您希望获取每个日期的最大字节数

然后,您可以将查询更改为:

SELECT CONCAT(v.date, ' ', v.hour) AS dateAndHour, v.totalInBytes
FROM(SELECT time_stamp AS fullDate, DATE(time_stamp) AS date, HOUR(time_stamp) AS hour, SUM(in_bytes) AS totalInBytes
    FROM video_hourly
    GROUP BY date, hour
    ORDER BY date, hour, totalInBytes DESC
) v
WHERE(
    SELECT COUNT(*)
    FROM(SELECT DATE(time_stamp) AS date, HOUR(time_stamp) AS hour, SUM(in_bytes) AS totalInBytes
        FROM video_hourly
        GROUP BY date, hour
        ORDER BY date, hour, totalInBytes DESC
    ) vh
    WHERE vh.date = v.date AND vh.totalInBytes >= v.totalInBytes
) <= 1;

如果没有任何示例数据,我无法尝试,但如果您想尝试,这里有一个链接。我用它来确保它不会产生任何错误。

欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!忘了补充我到目前为止提出的内容。然而,这不起作用,但这正是我尝试去做的方向:创建表TEMP1选择本地时间,Sumin字节作为sum in字节,Sumout字节作为sum out字节,从选择Convert_tztime_stamp,“+00:00”,“-07:00”作为本地时间,id,maxin字节,从视频中每小时输出字节,按年分组本地时间、月本地时间、日本地时间、小时本地时间请不要将代码示例或示例数据放入注释中-因为您无法格式化它,所以读取它非常困难。。。。取而代之的是:通过编辑你的问题来更新它,以提供额外的信息!谢谢,好的。伟大的我根据我的数据集验证了这一点,并进行了验证。我试图获取每天in_bytes列的最大值,因此我将SUM改为MAX函数。这就成功了。现在,我使用date、hour和max_total_in_bytes返回源表,以获得out_bytes列,从而对每个max in_bytes和out_bytes列进行最终求和。非常感谢。没问题,很高兴它成功了!如果答案有帮助,请随意接受。