哔哩哔哩数开Sql题

Emmmm虽然选择题全靠蒙,但对sql题还是挺好奇的,想问问大家这两题算难还是简单啊(非科班菜鸡刚学的心里没有B数)&&求第二题答案~

第一题我的答案先贴上(因为考试期间把partition位置给忘了,不是AC的答案,是后来百度完自己测试的),有大佬帮忙看看或者说交流一下查询的效率就更好啦,另外求第二题思路(有答案更好啦,感谢大佬)

第一题:给了用户的充值记录表,求各个用户充值次数最多的充值金额(也就是分档次充值了,同一档一个金额)和该金额的最后一次充值时间(希望我没记错)

表结构(我用的sql sever所以有些变动):
CREATE TABLE user_recharge(
id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
userid INT NOT NULL, 
user_name VARCHAR(50) NOT NULL,
recharge DECIMAL(30, 4) NOT NULL DEFAULT '0',
ts DATETIME
)

要求输出:用户id,用户名,充值金额,充值次数,最后一次充值时间

我的答案:
SELECT ur.userid, ur.user_name, ur.recharge, recharge_cnt, max(ur.ts)
FROM user_recharge AS ur
LEFT JOIN
	(SELECT userid, recharge, recharge_cnt, RANK() OVER(PARTITION BY userid ORDER BY user_recharge_cnt.recharge_cnt DESC) as rnk
	 FROM
		(SELECT userid, recharge, COUNT(recharge) as recharge_cnt
		 FROM user_recharge
		 GROUP BY userid, recharge
		) AS user_recharge_cnt
	) AS user_recharge_max_cnt
ON ur.userid = user_recharge_max_cnt.userid
AND ur.recharge = user_recharge_max_cnt.recharge
WHERE rnk = 1
GROUP BY ur.userid, ur.user_name, ur.recharge, recharge_cnt

第二题题目:给了用户登录直播间的登录退出记录,以每三分钟为一个时间片,求2019-01-01这一天在线人数最多的时间片?(完了忽然想不起来题目,求大佬纠正,我之后改)

要求输出:开始时间,直播间id,在线人数(好像就这三个吧)

建表语句不记得了,字段大概是有用户id,直播间id,进入直播间的时间(time),退出直播间的时间,和日期


#笔试题目##哔哩哔哩#
全部评论
好复杂的sql啊
点赞 回复 分享
发布于 2021-03-18 18:56

相关推荐

假如给我三个offer:一样 我也是一个面试都没有,但是问了一些学长学姐,他们很多都是十一月才有的面试。而且我觉得实习和秋招应该互不影响,完全可以一边实习一边秋招嘛,大不了混段实习经历打春招
点赞 评论 收藏
分享
1 11 评论
分享
牛客网
牛客企业服务