【问题标题】:Get average time per a visit获取每次访问的平均时间
【发布时间】:2015-06-03 00:32:20
【问题描述】:

我想要做的是获得平均 page_visit_duration 但对于某些行具有相同的 session_id 任何具有重复会话 id 的行只是意味着访问者访问了具有相同 session_id 的那些行的多个页面我需要添加在获得网站上花费的平均时间之前,他们访问的所有页面的总 page_visit_duration 我该怎么做我搜索了,但我找不到任何东西。

这是我尝试过的查询:

select avg(page_visit_duration) as avgtime from page_views 

select avg(page_visit_duration) as avgtime from page_views group by `session_id`

请注意第二个查询返回许多结果,我需要它返回 1 个平均值

我要做的是获取每位访问者在我们网站上花费的平均时间。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您需要先对结果进行分组,然后取其平均值。

    SELECT avg(total_duration) as avgtime FROM 
       (SELECT sum(page_visit_duration) as total_duration, session_id FROM page_views group by session_id) sq
    

    【讨论】:

    • 嗨,Scott,谢谢,此查询是否计算所有访问持续时间的时间,包括只有一个 session_id 的访问持续时间或仅具有重复会话 ID 的访问?
    • 所有会话——不只是重复。内部查询首先按会话 ID 对持续时间求和 - 外部查询对这些进行平均。
    • 非常感谢斯科特。我非常感谢您的帮助(:
    【解决方案2】:

    另一种方法是计算总时间并除以会话数:

    select sum(page_visit_duration) / count(distinct session_id) as avgtime
    from page_views
    group by `session_id`;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多