PHP - получить среднее время обработки (AHT) из базы данных mySQLi - PullRequest
0 голосов
/ 21 февраля 2019

Я следовал этому , чтобы попытаться получить AHT из моей базы данных.

Итак, структура базы данных:

 _____________________________________________________________________________________
|                                                                                     |
|     ticketid    tecnico_id        time_at      visit_hour_in     visit_hour_out     |
|_____________________________________________________________________________________|
|        1             3             08:15            16:03            17:00          |
|        2             7             10:45            11:03            13:00          |
|        3             9             08:05            12:03            14:00          |
|        4             6             08:43            12:03            13:30          |
|        5            10             13:30            14:03            15:45          |
|_____________________________________________________________________________________|

Поэтому я хотел бы получить среднее время обработки на tecnico_id.

Я пытался с:

SELECT tecnico_id,
  AVG((time_at) - (visit_hour_in)) AS responseTime,
  AVG((visit_hour_in) - (visit_hour_out)) AS activityTime,
  AVG((time_at) - (visit_hour_out)) AS handlingTime
FROM `ticket` GROUP BY tecnico_id ORDER BY `ticket`.`tecnico_id` ASC

Это выводит это:

 ___________________________________________________________________________
|                                                                           |
|        tecnico_id     responseTime    activityTime        handlingTime    |
|___________________________________________________________________________|
|        3                    0              0                    0         |
|        5                 13.6              0                  13.6        |
|        6      5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        7      5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        8      5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        9      5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        10     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        11     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        18     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        19     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        20     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        21     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        22     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        23     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|        24     5.791946308724833  -0.37583892617449666   5.416107382550336 |
|___________________________________________________________________________|

5.791946308724833, -0.37583892617449666 и 5.416107382550336 не повторяются, я просто не хотел форматировать таблицу.

Чтобы преобразовать ее в часы, минуты и секунды, я использую gmdate('H:i:s', '5.791946308724833'), (в качестве примера), однако... Результаты не точны, так как они должны быть .То, что мне нужно сделать , это получить разницу между этими полями, а затем получить среднее значение, так что я могу сказать, в качестве примера:

tecnico_id # 3 responseTime = 02 часаи 3 минуты, его время активности составляет 0 часов и 48 минут, а его AHT за билет составляет 3 часа и 0 минут.

Как мне этого добиться?

1 Ответ

0 голосов
/ 11 марта 2019

Способ решить это на самом деле легко.Я использовал этот код, чтобы он работал.

SELECT tecnico_id, COUNT(tecnico_id) as cantidad_tecnico ,
 SUM(TIMESTAMPDIFF(MINUTE,convert(time_at,time),convert(visit_hour_in, time))) as tiempo, 
 (TIMESTAMPDIFF(MINUTE,convert(time_at,time),convert(visit_hour_in, time))/COUNT(tecnico_id)) as promedio
FROM ticket group by tecnico_id asc
...