MySQL:每天每条记录的分组结果

标签 mysql join group-by average

我有一个包含两列“时间”和“登录”的表格,显示用户在一天中何时发送调用。

在每个用户的基础上,我需要找到最大、最小和平均 session 长度,其中 session 长度计算为任何给定日期的第一次调用和最后一次调用之间的时间(以分钟为单位)。

表:

Time                Login
2012-05-29 20:01:26 A
2012-05-29 20:01:40 A
2012-05-29 20:02:27 A
2012-05-29 20:58:46 A
2012-05-29 20:59:50 A
2012-05-29 21:00:12 A
2012-05-29 21:00:36 A
2012-05-30 21:28:28 A
2012-05-30 21:29:08 A
2012-05-30 21:29:13 A
2012-05-30 21:29:25 A
2012-04-06 10:25:24 A
2012-04-06 10:25:53 A
2012-04-06 10:26:35 A
2012-04-27 12:05:45 A
2012-04-27 12:06:06 A

所需的输出如下所示:

MaxSession Login
59         A

如上所述,MinSession 和 AverageSession 需要相同的输出。

我完全被困了几个小时,并且真的不知道如何完成这项工作。

我所取得的成就是获得每次登录的唯一活跃天数。 不过,我只是不知道如何实现接下来的步骤,这将是:

  • 每天每次登录获取第一个条目
  • 获取每天每次登录的最后一个条目
  • 计算上次输入之间的分钟差 以及每次登录每天首次进入的 session 长度
  • 选择每次登录的最大、最小和平均 session 长度

我将非常感谢任何类型的帮助!

最佳答案

试试这个

按天分组

Select Login,Date(Time) As LoginDay,Max(Time) As LastLogin,Min(Time) As FirstLogin,Count(*) As Logins,

From LoginsTable
Group By Login,Date(Time)
Order By LoginDay,Login

请将“时间”等列括在“”中

最大、最小和平均 session

    Select Login,Max(SessionMinutes) As MaxSessoin,Min(SessionMinutes) As MinSession,
    Avg(SessionMinutes) From
    (
        Select Login,
        LoginDay,LastLogin,FirstLogin,TotalLogins,Hour(DateDiff(LasTLogin-FirsTLogin))*60 + Minute(DateDiff(LasTLogin-FirsTLogin)) As SessionMinutes
        From
        (
            Select Login,Date(Time) As LoginDay,Max(Time) As LastLogin,Min(Time) As FirstLogin,Count(*) As Logins,
            From LoginsTable
            Group By Login,Date(Time)
        ) As Temp
    ) As Temp1

目前在计算分钟时忽略秒。

关于MySQL:每天每条记录的分组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156893/

相关文章:

mysql - 您是否必须连接表 "ON"字段,或者您可以在 where 子句中将它们等同起来?

arrays - Elasticsearch:当字段是数组时如何按字段分组文档

mysql - MySQL 中的分组依据问题

php - 在 PHP 中使用参数形成 URL 的问题

Mysql JDBC Short 和 Integer 之间的转换 : not supported?

php - 使用 1 个查询查询具有多个 GET 函数的多个表

python - 获取百分比变化,其中轴等于 python pandas 中的列?

mysql按名称分组查询,按id排序,按id限制

sql - 如何从表中选择不同列中三个或多个值相同的行?

php - 更新语句上的隐式 MySQL 连接 - 0 行受影响