首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客182179768号
获赞
397
粉丝
3
关注
4
看过 TA
40
华东交通大学
2014
数据分析师
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑牛客182179768号吗?
发布(30)
评论
刷题
收藏
牛客182179768号
关注TA,不错过内容更新
关注
2021-10-19 16:45
已编辑
华东交通大学 数据分析师
题解 | #网易云音乐推荐(网易校招笔试真题)#
题干“查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项” 思路描述:拆解题干中的要点,限定条件“user_id = 1 的用户,推荐其关注的人喜欢的音乐”可以先写出简单的select查询语句,得到其关注的人的user_id;再思考其喜欢的音乐,通过user_id可以select喜欢的音乐music_id;最后去联结music表 要点及注意点: 第一,三表联结,注意follow表与music_likes表联结时是通过(on)f.follower_id= ml.user_id,以达到“其关注...
0
点赞
评论
收藏
分享
2021-10-18 18:35
华东交通大学 数据分析师
题解 | #商品交易(网易校招笔试真题)#
主要是理解题干:找购买个数超过20,质量小于50的商品,按照商品id升序排序 第一,将两个表进行联结 FROM goods join trans on ... 第二,通过WHERE语句,筛选出“质量小于50的商品” 第三,对goods.id进行GROUP BY 分组,进行聚合求和sum(count),再通过HAVING 筛选出“购买个数超过20” SELECT g.id, g.name, g.weight, sum(t.count) as total FROM goods as g JOIN trans as t ON g.id=t.goods_id...
0
点赞
评论
收藏
分享
2021-09-23 11:52
华东交通大学 数据分析师
题解 | #计算用户的平均次日留存率#
思路:平均次日留存率=次日留存用户数/对应的当日用户数第一,对现有关系数据表的列进行拆解重构,目的是实现当日用户与次日用户的对应匹配,通过对question_practice_detail表利用from ...left outer join ... on ...建立自联结,这里重点指出通过on q1.device_id=q2.device_id and datediff(q2.date,q1.date)=1实现联结匹配,datediff(次日,当日)=1即次日-当日=1(相隔一天)发挥构建桥梁作用;第二,分母count(distinct q1.device_id,q1.date) 通过DIST...
深夜魔法师:
我觉得“平均”这个概念没有表达出来,平均只能站在独立用户的角度下,计算每个用户的留存率,然后平均。而代码中只是计算了留存率,即10种答题模式(count(distinct device_id,date),按照排列组合理解)中,只有3种属于留存的模式,0.3的计算结果是系统对用户第二天还会再来的留存率,而非“用户第二天还会再来的平均概率”
0
点赞
评论
收藏
分享
2021-09-23 11:31
华东交通大学 数据分析师
题解 | #计算用户8月每天的练题数量#
主要考察日期函数的使用思路:第一,每天练题数量的统计,要查询出每天,利用DAY(date) 实现并重名为day,再进行GROUP BY的分组;第二,WHERE条件筛选出YEAR(date)="2021" and month(date)="08" 的“21年8月”。 SELECT DAY(date) as day, COUNT(question_id) as question_cnt FROM question_practice_detail WHERE YEAR(date)="2021" and month(date)=...
0
点赞
评论
收藏
分享
2021-09-23 11:26
华东交通大学 数据分析师
题解 | #查看不同年龄段的用户明细#
** 主要考察利用case when多条件筛选函数的利用,**(case when age>=25 then "25岁以上" when age between 20 and 24 then "20-24岁" when age<20 then "20岁以下" else "其他" end) as age_cnt SELECT device_id, gender, (case when age>=25 t...
0
点赞
评论
收藏
分享
2021-09-23 11:24
华东交通大学 数据分析师
题解 | #计算25岁以上和以下的用户数量#
要求:将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量思路:第一,查询结果利用case when age>=25 then "25岁及以上" else "25岁以下" end 的条件查询实现年龄段的分组,并重命名为age_cut;第二,对不同年龄段的用户数量进行计数,在GROUP BY age_cut进行分组的基础上,利用COUNT()进行计数。 SELECT (case when age>=25 then "25岁及以上" else "25岁以下" end) as age_...
0
点赞
评论
收藏
分享
2021-09-23 11:18
华东交通大学 数据分析师
题解 | #查找山东大学男生的GPA#
本题考查组合查询思路:查询显示相同列信息,要求“结果不去重”,就涉及到UNION ALL联结两个查询,主要因为WHERE筛选条件、UNION都会默认对重复信息进行剔重处理。 SELECT device_id, gender, age, gpa FROM user_profile WHERE university="山东大学" UNION ALL SELECT device_id, gender, age, gpa FROM user_profile WHERE gender="ma...
0
点赞
评论
收藏
分享
2021-09-23 11:12
华东交通大学 数据分析师
题解 | #统计每个学校各难度的用户平均刷题数#
思路:第一,每个学校,各难度,涉及到对university,difficult_level利用GROUP BY分组实现;第二,用户平均答题数=所有用户答题总数/所有用户数,分母所有用户涉及到COUNT(DISTINCT ...)对登录设备账号进行剔重【由于存在一个设备账号多次登录的情况】,分子所有用户答题总数涉及COUNT()对question_id进行计数,不需要剔重;第三,需要对三个表进行联结FROM ...JOIN...ON...JOIN...ON...。 SELECT u.university, q2.difficult_level, COUNT(q.que...
0
点赞
评论
收藏
分享
2021-09-23 11:06
华东交通大学 数据分析师
题解 | #统计每个学校的用户平均答题数#
思路:第一,每个学校,涉及到利用GROUP BY分组实现;第二,用户平均答题数=所有用户答题总数/所有用户数,分母所有用户涉及到COUNT(DISTINCT ...)对登录设备账号进行剔重【由于存在一个设备账号多次登录的情况】,分子所有用户答题总数涉及COUNT()对question_id进行计数,不需要剔重;第三,需要对两个表进行联结FROM ...JOIN...ON...。 SELECT ue.university, COUNT(ql.question_id)/count(distinct ql.device_id) as avg_answer_cnt FROM questi...
子涯:
这样写会有点小问题,COUNT(ql.question_id)/count(distinct ql.device_id)进行除法运算时需要考虑分母为0的情况,虽然本题分母不可能为0,但是真正的业务场景中,除法计算是要考虑分母为0的情况,否则会出现SQL除0异常。可以使用case when的写法来处理分母为0的情况。
0
点赞
评论
收藏
分享
2021-09-23 10:32
已编辑
华东交通大学 数据分析师
题解 | #21年8月份练题总数#
思路:第一,所有练习过题目的总用户数,需要用COUNT()对device_id计数时进行剔重,利用DISTINCT实现;第二,练习过题目的总次数,需要直接用COUNT()对id计数,不进行剔重;第三,通过WHERE筛选出YEAR(date)=2021 AND MONTH(date)=08限定“21年8月份”。 SELECT COUNT(DISTINCT device_id) AS did_cnt, COUNT(id) AS question_cnt FROM question_practice_detail WHERE YEAR(date)=2021 AND MONTH(date...
0
点赞
评论
收藏
分享
2021-09-23 13:51
已编辑
华东交通大学 数据分析师
题解 | #浙大不同难度题目的正确率#
思路:第一,计算题目的正确率=答题正确的数目/答题数目,首先要知道分母答题数目利用COUNT()聚合函数,其次是分子答题正确的数目利用COUNT(case when ... then ... end)函数。第二,题干中的筛选条件,通过WHERE筛选出浙江大学,通过分组GROUP BY筛选出不同难度的题目,最后利用ORDER BY实现按正确率的升序排序。第三,相关关系表是由三个分表的联结实现的,利用FROM ... JOIN... ON... JOIN... ON...联结三个表。 SELECT q.difficult_level, COUNT(case when ql.resu...
0
点赞
评论
收藏
分享
2021-09-22 18:12
华东交通大学 数据分析师
题解 | #统计复旦用户8月练题情况#
首先,本题中的示例中未显示全部信息,缺少日期date的信息;其次,存在两张表的联结,匹配出相关信息;第三,回答正确的题目数,涉及到case when ...then ...end多条件判断后再用count()聚合函数进行统计; SELECT q.device_id, u.university, COUNT(q.id) as question_cnt, COUNT(case when q.result="right" then q.id end) as right_question_cnt FROM user_profile AS u...
0
点赞
评论
收藏
分享
2021-09-22 17:49
华东交通大学 数据分析师
题解 | #找出每个学校GPA最低的同学#
由于聚合函数MIN()在GROUP BY 分组后将不能同步筛选出对应的device_id,university的信息,需要通过row_number() over(partition by universtiy order by gpa)的窗口函数实现 SELECT device_id, university, gpa FROM (select device_id, university, gpa, row_number() over(PARTITION BY university ORDE...
0
点赞
评论
收藏
分享
2021-09-22 17:40
华东交通大学 数据分析师
题解 | #截取出年龄#
SUBSTRING_INDEX(str,delim,count),是一个通过特定标识符"delim"来截取子串的函数,我们日常使用频率是很高的;delim:通过该标识符来进行截取的,delim可以为任意字符,不要为空;count:代表第几次出现;count为正数,代表从左边取标识符出现第count次之前的子串;负数则相反,从右边取标识符出现第count次之后的子串。【'左边’代表‘前’, '右边’代表‘后’】【想获取两个‘.’中间的呢?可以嵌套一下】 SELECT age, COUNT(device_id) as number FROM( select dev...
0
点赞
评论
收藏
分享
2021-09-22 17:33
华东交通大学 数据分析师
题解 | #提取博客URL中的用户名#
SUBSTRING_INDEX(str,delim,count),是一个通过特定标识符"delim"来截取子串的函数,我们日常使用频率是很高的;delim:通过该标识符来进行截取的,delim可以为任意字符,不要为空;count:代表第几次出现;count为正数,代表从左边取标识符出现第count次之前的子串;负数则相反,从右边取标识符出现第count次之后的子串。【'左边’代表‘前’, '右边’代表‘后’】 SELECT device_id, SUBSTRING_INDEX(blog_url,"/",-1) AS user_name FR...
0
点赞
评论
收藏
分享
1
2
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务