【问题标题】:User Activity - SQL Query用户活动 - SQL 查询
【发布时间】:2021-09-16 00:46:53
【问题描述】:

我需要一些帮助来编写 SQL 查询

以下是数据: 应用程序使用数据保存在下表中: 表会话:Id、userId、duration、data_timestamp

我正在尝试编写一个查询,为每个“好用户”选择 userId 和平均会话持续时间

  • 好用户:平均每周至少进行 4 次会话的用户

我尝试编写以下查询,但仍然缺少很多要点

SELECt avg_sessions
FROM (
SELECT
    S1.userid,
    COUNT(distinct id) as num_sessions
FROM
    sessions
WHERE data_timestamp BETWEEN DATE_SUB(data_timestamp, INTERVAL 7 DAY)
GROUP BY userid) as cte

示例: 对于以下数据: Sample Data

我们得到以下分析: Analysis

最后的结果是: Result

【问题讨论】:

  • 你用的是哪个数据库-> oracle, postgresql,sql server?
  • 除了数据库标签之外,样本数据和所需结果也会有所帮助。那样会更清晰。你说的周是什么意思?有7天吗?七个特定的日子?

标签: sql database data-analysis user-activity


【解决方案1】:

这是一种方法。我使用 week_dt 列将日期组合在一起。然后选择在该周内至少进行过 5 次会话的用户。

SELECT
     S1.userid,
     DATE_SUB(data_timestamp, INTERVAL WEEKDAY(data_timestamp) DAY) as week_dt,
     COUNT(distinct id)/7 as num_sessions
FROM
    sessions
GROUP BY userid
HAVING COUNT(distinct id)/7>=5

【讨论】:

  • 嗨乔治,非常感谢您的回答!但您需要提供一周内平均至少有 5 次会话的用户,而不是一周内总共有 5 次会话的用户
  • 那么除以 7 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2022-08-16
相关资源
最近更新 更多