0

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

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

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

  • 好用户:平均每周至少有 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

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

我们得到以下分析: 分析

最终结果是: 结果

4

1 回答 1

0

这是一种方法。我使用 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
于 2021-09-16T01:51:39.600 回答