MySQL MAX显示关联数据的错误结果

时间:2009-12-08 16:23:37

标签: php mysql

我正在创建一个查询,使用PHP从MySQL数据库中提取结果,查询结果输出到Excel文档。

以下是查询:

$sql = "SELECT node, port, MAX(utiltx), MAX(utilrx), time, hour(time), day(time), month(time) FROM intfstats WHERE node IN('$separated') AND year(time)=$year AND month(time)=$month AND port IN('$portsep') GROUP BY node,port,day(time);";

我认为查询工作正常,但它始终将时间显示为午夜(这是时间戳列中的第一个)。

目标是查询的乘积是白天的最大利用率rx和tx,以及发生最大吞吐量的时间。

我很感激任何有关这方面的帮助,因为我已经花了很长时间没有足够的MySQL查询知识来推迟它!

1 个答案:

答案 0 :(得分:0)

如果您在某一天有2个以上具有相同最大值的记录,您如何处理打破平局?

SELECT t.node, 
       t.port, 
       t.utiltx, 
       t.utilrx, 
       t.time, 
       HOUR(t.time), 
       DAY(t.time), 
       MONTH(t.time) 
  FROM INTFSTATS t
  JOIN (SELECT is.node,
               is.port,
               MAX(is.utiltx) 'mutiltx', 
               MAX(is.utilrx) 'mutilrx',
               DAY(is.time) 'dd', 
               MONTH(is.time) 'mon',
               YEAR(is.time) 'yy'
          FROM INTFSTATS is
         WHERE is.node = $node
           AND is.port = $port
      GROUP BY is.node, 
               is.port, 
               DAY(is.time), 
               MONTH(is.time), 
               YEAR(is.time)) x ON x.node = t.node
                               AND x.port = t.port
                               AND x.mutiltx = t.utiltx
                               AND x.mutilrx = t.utilrx
                               AND x.dd = DAY(t.time)
                               AND x.mon = MONTH(t.time)
                               AND x.yy = YEAR(t.time)
 WHERE x.yy = $year
   AND x.mon = $mon