You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写SQL查询:统计拥有多个会话用户的平均会话时长

嗨,刚入门SQL别担心,这题其实挺适合练手的,咱们一步步来搞定这个需求~

对应的SQL查询语句
SELECT userId, AVG(duration) AS average_session_duration
FROM sessions
GROUP BY userId
HAVING COUNT(id) > 1;
语句拆解说明

我给你拆解开每个部分,方便你理解:

  • SELECT userId, AVG(duration) AS average_session_duration:咱们要选用户ID,还要用AVG()函数计算这个用户的平均会话时长,给结果列起个好读的别名average_session_duration,这样查出来的结果更清晰。
  • FROM sessions:指定咱们要查的表就是你说的sessions表啦。
  • GROUP BY userId:把所有会话记录按用户ID分组,这样同一个用户的所有会话就会被归到一组里。
  • HAVING COUNT(id) > 1:这一步是筛选分组后的结果,只保留会话数量大于1的用户。这里要注意哦,不能用WHERE,因为WHERE是用来筛选单条记录的,而HAVING才是用来筛选分组后的结果的。COUNT(id)是统计每个用户的会话总数,因为id是主键不会有空值,用COUNT(*)也能达到同样的效果。

另外补充个小细节:因为你的表中duration是NOT NULL的,所以AVG(duration)计算的时候不会有忽略空值的问题,结果会很准确~

内容的提问来源于stack exchange,提问作者tranc3nd1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:57:52