MySQL MAX показывает неверный результат для связанных данных

0

Я создаю запрос для вывода результатов из базы данных MySQL с помощью PHP, результаты запроса выводятся в документ 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);";

Я думаю, что запрос работает нормально, но он всегда отображает время как полночь (что является первым в столбце timestamp).

Цель состоит в том, чтобы продукт запроса был максимальным использованием rx и tx днем, а время суток - максимальная пропускная способность.

Я был бы признателен за любую помощь в этом, поскольку я слишком долго занимался этим, не имея достаточного знания MySQL-запросов, чтобы отключить его.

  • 0
    Отлично - большое спасибо за вашу помощь в этом!
Теги:

1 ответ

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
  • 0
    Я обнаружил, что вложенные выборки в MySQL работают очень медленно при работе с сотнями тысяч записей.
  • 0
    Если у вас есть другой способ получить максимальное значение для каждого виджета, для каждого дня в день - я весь в ушах. Если модель данных не может быть изменена в соответствии с потребностями, то, возможно, рассмотрим PostgreSQL?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню