MySQL不计算平均时间和日期时间

时间:2020-02-18 15:12:11

标签: mysql average timestampdiff

我在计算时间平均时遇到问题。我有一个包含很多记录的表,该表的结构是用户ID,工作的开始和结束时间(如果需要,您可以download the table script here),并且我需要获取每个用户的平均有效工作时间,所以我平均来说是这样的:

select iduser, sec_to_time(avg(timestampdiff(second, begin, end))) 
from test 
group by iduser;

到目前为止,它返回:

USER1 00:25:55.9327
USER2 05:47:44.8713
USER3 03:13:43.4724

但是,问题是当我尝试计算所有用户的平均值(不分组)时

select sec_to_time(avg(timestampdiff(second,begin, end))),avg(timestampdiff(second,begin, end))
from test;

它返回'03:26:18.9014',但是根据我的计算,它应该返回03:09:07.333。我用常数值和excel测试进行了检查

select sec_to_time((time_to_sec("00:25:55.9327")+time_to_sec("05:47:44.8713")+time_to_sec("3:13:43.4724"))/3);

到目前为止,我不明白为什么它返回'03:26:18.9014',根据其他计算,它是不正确的。有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

如果您运行此查询

select  count(iduser) as cnt,
    sum(timestampdiff(SECOND, `begin`, `end`)) as tot,
    avg(timestampdiff(SECOND, `begin`, `end`)) as aver,
    sec_to_time(avg(timestampdiff(SECOND, `begin`, `end`))) as tim
from test ;

结果

cnt     tot         aver        tim
2903    35935951    12378.9015  03:26:18.9014

获得所有零件,以便您可以进行自己的计算,而且看起来正确

答案 1 :(得分:0)

我发现这是统计数学基础,如果组中记录数不同,我将无法获得相同的结果,每个用户必须拥有相同数量的记录