MySQL AVG TIME持续时间计算和相关函数?

时间:2016-03-01 10:39:37

标签: mysql sql

表格,其中包含具有两个日期时间列的网站用户的登录数据。一个是登录时间,另一个是登出时间。

表有以下列

user_id (user id of the
datetime (start login time DATETIME ) 
datetime_end (end logout time DATETIME)

根据这些数据,我需要生成报告或计算以下内容

  1. 每日AVG用户登录时间(即2015年3月1日21分钟,2016年11月3日25分钟..等)
  2. 第二份报告

    1. 当前日期(过去24小时)基于小时AVG登录持续时间(即与上述相同但仅限每小时AVG)
    2. 有没有办法通过MySQL查询实现这一目标? (或SQL查询)

      表是创建

      CREATE TABLE IF NOT EXISTS `users_login` (
        `login_id` int(11) unsigned NOT NULL,
        `user_id` int(11) unsigned NOT NULL DEFAULT '0',
        `last_ip` varchar(45) NOT NULL DEFAULT '0.0.0.0',
        `server_ip` varchar(225) DEFAULT '0.0.0.0',
        `country` varchar(2) NOT NULL DEFAULT '00',
        `continent` tinytext,
        `datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
        `datetime_end` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      

1 个答案:

答案 0 :(得分:1)

第一个这样的东西

SELECT DATE(datetime),AVG(TIMESTAMPDIFF(MINUTE,datetime,datetime_end)) as DailyAvg
FROM users_login   
GROUP BY DATE(datetime)

每小时:

SELECT DATE(datetime),extract(hour from datetime) as HourCol,
       AVG(TIMESTAMPDIFF(MINUTE,datetime,datetime_end)) as HourlyAvg
FROM users_login   
WHERE DATE(datetime) = date(now())
GROUP BY DATE(datetime),extract(hour from datetime) 

当然这个查询有一些例外..你没有解释整个逻辑,所以我假设你想按登录时间和登录日期分组..