博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Easy之1142.过去30天的用户活动II
阅读量:3716 次
发布时间:2019-05-21

本文共 1186 字,大约阅读时间需要 3 分钟。

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_userfrom activitywhere datediff('2019-07-27',activity_date) < 30
你可能感兴趣的文章
JS面试题汇总(四)
查看>>
JS 中强大的操作符,总有几个你没听说过
查看>>
聊聊 Vue3.0 响应式数据那些事儿
查看>>
薪水被应届生倒挂了,很不爽,我应该跳槽吗?
查看>>
前段元素居中的N种方法
查看>>
多个JS优化小技巧
查看>>
JavaScript中实用的8个代码片段
查看>>
6个规则去净化你的代码
查看>>
CSS八种让人眼前一亮的HOVER效果
查看>>
8个强大的JavaScript技巧
查看>>
一文拨开var、let、const的云雾
查看>>
插槽是什么?我来告诉你!
查看>>
10款好用的谷歌chrome浏览器插件提高开发效率
查看>>
史上最全面、最详细的Cookie总结
查看>>
js 网络请求框架 ajax和axios、fetch的区别
查看>>
一文读懂css的四种定位
查看>>
程序员必读的10本书籍
查看>>
20年前和现在-为什么程序员越来越累
查看>>
JS+CSS自适应屏幕
查看>>
你会喜欢的新数组方法:array.at(index)
查看>>