0

对于下表,我想获取每个站点的 col-D 和 col-E 的最后一小时和当前小时之间的差异。作为其中的一部分,我试图首先获取每个站点的最新(当前)小时条目,但以下查询仅列出了 endTime 为 01:00:00 的条目,当我的条目截至上午 9 点时

select distinct(mmeName), endDate, endTime, c_ratio, set_time from attach where
 type='INIT' and Date(endDate)=curDate() and 
Time(endTime) >= DATE_ADD(Time(endTime), INTERVAL -1 HOUR) group by mmeName;

对于当前问题以及找出当前和上一小时之间的差异,我们将不胜感激。

在此处输入图像描述

4

1 回答 1

1

已编辑

我想这就是你要找的。这将为您提供 endTime 比每个 mmeName 的最新当前时间早一小时的任何记录。'max' 子选择获取每个 mmeName 的最新结束日期时间,并且在此之前的一小时记录中的连接匹配。

SELECT  mmeName, endDate, endTime, c_ratio, set_time 

FROM    attach a

        JOIN 
        (SELECT  mmeName, CONCAT(endDate, ' ' , endTime) max_endDateTime
         FROM    attach 
         WHERE   type = 'INIT' 
         ORDER BY endDate DESC, endTime DESC
        ) AS max ON max.mmeName = a.mmeName
                AND max.max_endDateTime = DATE_ADD(CONCAT(endDate, ' ' , endTime), INTERVAL 1 HOUR)

WHERE   type = 'INIT'
;

原来的

select  mmeName, endDate, endTime, c_ratio, set_time 

from    attach 

where   type='INIT' and Date(endDate)=curDate() and 
        endTime >= DATE_SUB(now(), INTERVAL -1 HOUR) 

group by mmeName;

注意:如果给定的 mmeName 有多个匹配记录,此查询将只获取其中一个。

已编辑:您需要从 WHERE 子句中删除 TIME() 函数。两者都会有日期和时间,如果你没有,如果你在 12:00 AM 到 1:00 AM 之间运行它,它不会返回任何结果。

于 2013-10-25T15:33:36.273 回答