Easy之1142.过去30天的用户活动II

Table: Activity

Column Name Type
user_id int
session_id int
activity_date date
activity_type enum

该表没有主键,它可能有重复的行。
activity_type 列是 ENUM(“ open_session”,“ end_session”,“ scroll_down”,“ send_message”)中的某一类型。
该表显示了社交媒体网站的用户活动。
请注意,每个会话完全属于一个用户。

问题

编写SQL查询以查找截至2019年7月27日(含)的30天内每个用户的平均会话数,四舍五入到小数点后两位。我们只统计那些会话期间用户至少进行一项活动的有效会话。

示例

Activity table:

user_id session_id activity_date activity_type
1 1 2019-07-20 open_session
1 1 2019-07-20 scroll_down
1 1 2019-07-20 end_session
2 4 2019-07-20 open_session
2 4 2019-07-21 send_message
2 4 2019-07-21 end_session
3 2 2019-07-21 open_session
3 2 2019-07-21 send_message
3 2 2019-07-21 end_session
3 5 2019-07-21 open_session
3 5 2019-07-21 scroll_down
3 5 2019-07-21 end_session
4 3 2019-06-25 open_session
4 3 2019-06-25 end_session

Result table:

average_sessions_per_user
1.33

解释

User 1 和 2 在过去30天内各自进行了1次会话,而用户3进行了2次会话,因此平均值为(1 +1 + 2)/ 3 = 1.33。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/user-activity-for-the-past-30-days-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

select ifnull(round(count(distinct session_id)/
count(distinct user_id),2),0) as average_session_per_user
from activity
where datediff('2019-07-27',activity_date) < 30

你可能感兴趣的:(leetcode刷题,MySQL)