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

MySQL:每天按记录分组的结果,mysql,join,group-by,average,Mysql,Join,Group By,Average,我有一个表,其中有两列“时间”和“登录”,显示用户在一天中发送电话的时间 在每个用户的基础上,我需要找到最大、最小和平均会话长度,其中会话长度计算为任何给定日期第一次呼叫和最后一次呼叫之间的时间(以分钟为单位) 表: 所需的输出如下所示: MaxSession Login 59 A 如上所述,MinSession和AverageSession需要相同的输出 我被困了好几个小时,真的不知道该怎么做 我所取得的成就是每次登录都能获得唯一的活动天数。 不过,我不知道如何实现下一步,即

我有一个表,其中有两列“时间”和“登录”,显示用户在一天中发送电话的时间

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

表: 所需的输出如下所示:

MaxSession Login
59         A
如上所述,MinSession和AverageSession需要相同的输出

我被困了好几个小时,真的不知道该怎么做

我所取得的成就是每次登录都能获得唯一的活动天数。 不过,我不知道如何实现下一步,即:

  • 每天每次登录获取第一个条目
  • 每天每次登录获取最后一个条目
  • 计算最后一个条目之间的差异(以分钟为单位) 每天登录的第一个条目为SessionLength
  • 选择每次登录的最大、最小和平均会话长度
我将非常感谢任何形式的帮助

试试这个

按天分组

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
请将“时间”等列的列括在“”中

最大、最小和平均会话数

    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

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

好的,我已经知道如何获取每天每次登录的第一个条目:
选择时间,日期(时间)为ActiveDay,按登录分组,ActiveDay HAVING Time=Min(时间)但是它不适用于Max…非常感谢@但是,Sudhakar不是以每次登录为基础的,是吗?我应该说得更清楚,这个表包含许多不同的登录名。谢谢!这真的做到了!
    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