牛客网-MySQL
ToT留白
这个作者很懒,什么都没留下…
展开
-
牛客网-SQL篇-全部题目-困难-SQL81 牛客的课程订单分析(五)
SQL问题查询在2025-10-15以后,如果有一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程,那么输出这个用户的user_id,以及满足前面条件的第一次购买成功的C++课程或Java课程或Python课程的日期first_buy_date,以及满足前面条件的第二次购买成功的C++课程或Java课程或Python课程的日期second_buy_date,以及购买成功的C++课程或Java课程或Python课程的次数cnt,并且输出结果按照user_id升序排序。原创 2022-05-07 19:31:41 · 1077 阅读 · 0 评论 -
牛客网-SQL篇-全部题目-困难-SQL76 考试分数(五)
SQL问题查询各个岗位分数的中位数位置上的所有grade信息,并且按id升序排序解题1.由 ## 牛客网-SQL篇-全部题目-较难-SQL75 考试分数(四) ## 知,中位数的排序:-- 解题链接:https://blog.csdn.net/qq_45491551/article/details/124322458select job, (case when max(r)%2 != 0 then round((max(r)+1)/2, 0) else round(m原创 2022-05-06 20:58:19 · 161 阅读 · 0 评论 -
牛客网-SQL篇-全部题目-困难-SQL86 实习广场投递简历分析(三)
SQL问题查询在2025年投递简历的每个岗位,每一个月内收到简历的数目,和对应的2026年的同一个月同岗位,收到简历的数目,最后的结果先按first_year_mon月份降序,再按job降序排序显示。解题1.先查看2025年内每月各岗位简历数目,代码如下:select job, date_format(date,'%Y-%m') first_year_month, sum(num) first_year_cnt from resume_infowhere year(date)=202原创 2022-05-06 19:25:39 · 262 阅读 · 0 评论 -
牛客网-SQL篇-全部题目-SQL91 获得积分最多的人(三)
SQL问题查找积分最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序。解题1.需要对积分表进行改写,将type为 ‘reduce’ 的积分(grade_num)变为负数,代码如下:select user_id, (case when type = 'reduce' then -1*grade_num else grade_num end) jjfrom grade_info这里使用case when…then…else…end,临时表如下:2原创 2022-05-05 22:21:42 · 633 阅读 · 0 评论 -
牛客网-SQL篇-SQL进阶挑战-SQL25 满足条件的用户的试卷完成数和题目练习数
SQL问题找到高难度SQL试卷得分平均值大于80并且是7级的红名大佬,统计他们的2021年试卷总完成次数和题目总练习次数,只保留2021年有试卷完成记录的用户。结果按试卷完成数升序,按题目练习数降序。解题1.找到高难度SQL试卷得分平均值大于80并且是7级的红名大佬。select u.uidfrom user_info u join exam_record er on u.uid = er.uidjoin examination_info ei on er.exam_id = ei.exam_原创 2022-04-25 17:19:32 · 375 阅读 · 2 评论 -
牛客网-SQL篇-SQL进阶挑战-SQL20 月均完成试卷数不小于3的用户爱作答的类别
SQL问题统计出 “当月均完成试卷数”不小于3的用户们爱作答的类别及作答次数,按次数降序输出。解题1.先找到“月均完成试卷数”不小于3的用户select uid from exam_recordwhere score is not nullgroup by uidhaving count(score)/count(distinct date_format(submit_time,"%Y%m")) >= 3count(score)/count(distinct date_format原创 2022-04-24 10:16:52 · 186 阅读 · 0 评论 -
牛客网-SQL篇-非技术快速入门-SQL26 计算25岁以上和以下的用户数量
SQL题目将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量。解题1.首先将年龄划分两类,25岁及以上和25岁以下(age=null计为25岁以下),这里使用if() 函数。select if(age>=25,'25岁及以上','25岁以下' )as age_cut,device_idfrom user_profile查询结果为age_cut,device_id:2.再利用一次查询嵌套,将age_cut分组。select age_cut,count(de原创 2022-04-23 11:04:33 · 728 阅读 · 0 评论 -
牛客网-SQL篇-全部试题-较难-SQL80 牛客的课程订单分析(四)
SQL问题查询在2025-10-15以后,如果有一个用户下单2个以及2个以上状态为购买成功的C++课程或Java课程或Python课程,那么输出这个用户的user_id,以及满足前面条件的第一次购买成功的C++课程或Java课程或Python课程的日期first_buy_date,以及所有日期里购买成功的C++课程或Java课程或Python课程的次数cnt,并且输出结果按照user_id升序排序。解题1.看到第一次的日期,考虑使用row_number() 窗口函数,并按日期升序,这样最终查询输出只原创 2022-04-21 16:28:02 · 268 阅读 · 0 评论 -
牛客网-SQL篇-全部题目-较难-SQL75 考试分数(四)
SQL问题查询各个岗位分数升序排列之后的中位数位置的范围,并且按job升序排序。解题1.求中位数,需要知道每个岗位分数所在位置,即需要对每个岗位下各分数排序(中位数不需要考虑重复的情况,因此使用row_number() 窗口函数)。先观察每个岗位按分数排序情况,代码如下:select job, score, dense_rank() over(partition by job order by score) rfrom grade查看临时表:2.岗位B、C++ 总数为3(奇数原创 2022-04-21 15:37:26 · 788 阅读 · 0 评论 -
牛客网-SQL篇-全部试题-较难-SQL74 考试分数(三)
SQL问题每个岗位分数排名前2名的用户解题1.看到排名,想到窗口函数:rank()、dense_rank()、row_number()。本题中可能出现分数相同的情况,此时排名也相同,因此选用dense_rank()函数(rank()函数排列序号不连续、row_number()函数不考虑分数相同时排名并列情况)。先查看排序后的临时表,SQL代码如下:select g.id, l.name, g.score, dense_rank() over(partition by l.name or原创 2022-04-21 10:55:43 · 521 阅读 · 0 评论 -
牛客网-SQL篇-全部试题-较难-SQL68 牛客每个人最近的登录日期(三)
牛客网-SQL68原创 2022-04-20 20:55:04 · 172 阅读 · 0 评论