使用PHP / MySQL的平均响应时间

我有一个MySQL数据库中的2个表。 一个叫tickets ,另一个是ticket_updates

门票有以下几列:

  • 序列
  • 票号
  • 约会时间
  • 和ticket_updates

  • 序列
  • ticket_seq
  • 约会时间
  • 开始时间
  • 时间结束
  • ticket_seqticket_updates与表链接ticketnumbertickets表。 ticket_updates可能有多行链接到tickets表中的一行。

    我想要显示平均响应时间,以便回复票证需要多长时间。 两个表中的datetime列都是该行添加/插入时的完整时间戳(Ymd H:i:s)

    我如何显示上周的平均响应时间?


    从您的聊天机智安迪·琼斯据我所知,你定义了票的响应时间作为时间之间经过tickets.datetime和第一ticket_updates.datetime该票。 在这种情况下,以下查询会返回过去7天内添加的门票的平均响应时间(以秒为单位)。

    SELECT avg(response_seconds)
      FROM (
         SELECT time_to_sec(timediff(min(u.datetime), t.datetime)) AS response_seconds
           FROM tickets t
           JOIN ticket_updates u
             ON t.ticketnumber = u.ticket_seq
          WHERE t.datetime > now() - INTERVAL 7 day
          GROUP BY t.ticketnumber ) AS r
    

    我已经汇集了一个完整的例子。 我假设了一些关于你的数据的东西 - 如果列的类型错误,就适当地改变。 我也将以秒为单位返回平均更新时间。

    CREATE TABLE tickets (
      sequence int(10) not null auto_increment primary key,
      ticket_number int(10) not null default 0,
      date_added timestamp,
      index ticket_number_index (ticket_number)
      );
    
    INSERT INTO tickets (ticket_number, date_added) VALUES
      (1, '2013-12-01 01:00:00'),
      (2, '2013-12-15 02:00:00'),
      (3, '2013-12-10 03:00:00'),
      (4, '2013-12-13 04:00:00'),
      (5, '2013-12-17 05:00:00');
    
    
    CREATE TABLE ticket_updates (
      sequence int(10) not null auto_increment primary key,
      ticket_number int(10) not null default 0,
      date_added timestamp,
      starttime datetime,
      endtime datetime,
      index ticket_number_index (ticket_number)
      );
    
    INSERT INTO ticket_updates (ticket_number, starttime, endtime, date_added) VALUES
      (1, '2013-12-01 01:01:00', '2013-12-01 01:02:00', '2013-12-01 01:02:00'),
      (1, '2013-12-01 01:01:00', '2013-12-01 01:02:00', '2013-12-01 01:02:00'),
      (2, '2013-12-15 02:01:00', '2013-12-15 02:02:00', '2013-12-15 02:02:00'),
      (2, '2013-12-15 02:01:00', '2013-12-15 02:02:00', '2013-12-15 02:02:00'),
      (2, '2013-12-15 02:01:00', '2013-12-15 02:02:00', '2013-12-15 02:02:00'),
      (2, '2013-12-15 02:02:00', '2013-12-15 02:02:50', '2013-12-15 02:02:50'),
      (4, '2013-12-13 04:01:00', '2013-12-13 04:02:00', '2013-12-13 04:02:00'),
      (4, '2013-12-13 04:01:00', '2013-12-13 04:05:30', '2013-12-13 04:05:30'),
      (5, '2013-12-17 05:01:00', '2013-12-17 05:03:00', '2013-12-17 05:03:00');
    

    然后你可以运行这个查询...

    SELECT SUM(TO_SECONDS(ticket_updates.date_added) - TO_SECONDS(tickets.date_added)) / count(*) as update_time
    FROM tickets, ticket_updates
    WHERE tickets.ticket_number = ticket_updates.ticket_number AND
      ticket_updates.date_added > now() - INTERVAL 1 WEEK
    

    不知道这是不是你正在寻找的 - 但这(和小提琴)可能会帮助你更接近答案。

    请参阅小提琴:http://sqlfiddle.com/#!2/4c0acc/1


    平均值是所有值的总和(在您的情况下,您必须将日期时间转换为UNIX时间戳),然后将此总和除以总数。 例如,可以通过发出命令通过MySQL完成转换

    SELECT unix_timestamp(str_to_date('30/05/2011','%d/%m/%Y'));
    

    或者在显示结果时使用PHP。 这取决于你的项目的逻辑和结构。

    链接地址: http://www.djcxy.com/p/17705.html

    上一篇: Average Response times using PHP/MySQL

    下一篇: Creating your own packages using chocolatey