首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择要计算平均值的特定MySQL行

选择要计算平均值的特定MySQL行
EN

Stack Overflow用户
提问于 2012-12-21 22:26:48
回答 1查看 157关注 0票数 0

我们有一个MySQL表,它跟踪用户会话的开始和结束时间:

代码语言:javascript
复制
UserId      Start                   End
150392  2012-07-11 01:11:28 2012-07-11 01:17:36
150392  2012-07-11 01:19:03 2012-07-11 01:23:47
150393  2012-07-11 01:22:47 2012-07-11 01:38:15
150051  2012-07-11 01:31:03 2012-07-11 01:36:07
150393  2012-07-11 01:37:43 2012-07-11 01:56:41
150392  2012-07-11 01:48:57 2012-07-11 01:54:23

我希望能够根据用户进入我们的系统的次数来检索平均会话次数。为了澄清,我想知道用户第一次进入系统时的平均会话时间,系统中第二次的平均会话时间等等。因此,当用户I第一次出现在表中时,即用户第一次会话;我们将所有这些第一次出现的会话时间相加,除以计数。然后,对第二次用户标识事件执行相同的操作,并获得平均时间等。

以上面的表为例,第三次会话的平均时间为326秒,因为只有一个用户有第三次会话(userID 150392,最后一行)。

所以我在寻找这样的输出:

代码语言:javascript
复制
SessionCount    AvgTime (seconds)
1               540
2               810
3               326

我希望这是有意义的。任何建议都将不胜感激!谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-21 22:57:09

代码语言:javascript
复制
SELECT SessionCount, AVG(duration) AS AvgTime FROM (
  SELECT   COUNT(*) AS SessionCount,
           TIMESTAMPDIFF(SECOND, t2.Start, t2.End) AS duration
  FROM     my_table t1
      JOIN my_table t2
        ON t1.UserId = t2.UserId AND t1.Start <= t2.Start
  GROUP BY t2.UserId, t2.Start, t2.End
) t GROUP BY SessionCount

请在木琴上看到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13997988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档