我需要一些帮助来编写一个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
的例子:对于以下数据:样本数据
我们得到以下分析:分析
,最终结果为:结果
可以这样做。我使用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