MySQL MAX ilişkili veriler için yanlış sonucunu gösterir

1 Cevap php

Ben PHP kullanarak bir MySQL veritabanı sonuçlarını çekmek için bir sorgu oluşturma, sorgu sonuçları bir Excel belgesi çıktısı vardır.

İşte sorgu:

$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);";

Ben sorgu ok çalışan düşünüyorum, ama her zaman (zaman damgası sütununda ilk) gece yarısı gibi zaman gösterir.

Sorgunun ürün maksimum kullanım rx ve tx gün ve maksimum verim oluştu o günün zaman için amaçtır.

Onu çekip MySQL sorguları yeterli bilgiye sahip üzerine harcanan çok uzun olduğu için ben bu konuda herhangi bir yardım takdir ediyorum!

1 Cevap

Eğer belirli bir günde aynı maksimum değere sahip 2 + kayıtları ne zaman nasıl, tie-kesiciler ile anlaşma yapmak?

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