![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客SQL题
木十一的木马
这个作者很懒,什么都没留下…
展开
-
SQL63 刷题通过的题目排名
题目:在牛客刷题有一个通过题目个数的(passing_number)表,id是主键第1行表示id为1的用户通过了4个题目;请你根据上表,输出通过的题目的排名,通过题目个数相同的,排名相同,此时按照id升序排列,数据如下:id为5的用户通过了5个排名第1,id为1和id为6的都通过了4个,并列第2题解:row_number()对应唯一排序:1、2、3、4dense_rank()对应相同次序可重复,但不跳过下一个次序值:1、2、2、3rank()对应相同次序可重复,并且跳过下一个次序值:1、原创 2021-12-05 17:04:12 · 121 阅读 · 0 评论 -
SQL68 牛客每个人最近的登录日期(三)
题目:牛客每天有很多人登录,请你统计一下牛客新登录用户的次日成功的留存率第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备第一次新登录了牛客网第4行表示user_id为2的用户在2020-10-12使用了客户端id为2的设备登录了牛客网最后1行表示user_id为1的用户在2020-10-14使用了客户端id为2的设备登录了牛客网新登录用户的次日成功的留存率解题公式:(第一天登录的新用户并且第二天也登录的用户)/(总用户)SELECT ROUND(COUNT原创 2021-10-11 23:33:32 · 154 阅读 · 0 评论 -
SQL78 牛客的课程订单分析(二)
题目:第1行表示user_id为557336的用户在2025-10-10的时候使用了client_id为1的客户端下了C++课程的订单,但是状态为没有购买成功。第2行表示user_id为230173543的用户在2025-10-12的时候使用了client_id为2的客户端下了Python课程的订单,状态为购买成功。最后1行表示user_id为557336的用户在2025-10-25的时候使用了client_id为1的客户端下了C++课程的订单,状态为购买成功。写出一个sql语句查询在2025-1原创 2021-10-06 20:59:52 · 137 阅读 · 0 评论 -
SQL73 考试分数(二)
题目:第8行表示用户id为8的用户选择了前端岗位并且考了9999分请你写一个sql语句查询用户分数大于其所在工作(job)分数的平均分的所有grade的属性,并且以id的升序排序,如下:select g.id, g.job, g.score from grade g where g.score > (select avg(score) from grade g1 where g.job = g1.job group by job)...原创 2021-10-05 16:43:15 · 72 阅读 · 0 评论 -
SQL72 考试分数(一)
题目:写一个sql语句查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入):第1行表示用户id为1的用户选择了C++岗位并且考了11001分使用聚合函数ROUND(聚合函数,精确到小数点后几位)select job, ROUND(avg(score), 3) from gradegroup by job order by avg(score) desc...原创 2021-09-30 11:29:22 · 69 阅读 · 0 评论 -
SQL67 牛客每个人最近的登录日期(二)
题目:牛客每天有很多人登录,请你统计一下牛客每个用户最近登录是哪一天,用的是什么设备.有一个登录(login)记录表第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网1.先根据用户分组,查出每个用户登录的最新日期:select user_id,max(date) from login group by login.user_id ;2.然后查找出所有用户的名字,所有的登录设备,所有的登录日期:select user.name as u_n, cl原创 2021-09-29 23:33:53 · 436 阅读 · 0 评论 -
SQL66 牛客每个人最近的登录日期(一)
牛客每天有很多人登录,请你统计一下牛客每个用户最近登录是哪一天。思路:找到最大的日期,按照用户id分组,然后按照用户id排序。代码:select user_id, Max(date) from logingroup by user_id order by user_id ...原创 2021-09-25 17:32:59 · 141 阅读 · 0 评论 -
SQL62 出现三次以上相同积分的情况
having的用法:having语句通常与group by语句联合使用,用来过滤由group by语句返回的记录集。having语句的存在弥补了where关键字不能与聚合函数联合使用的不足。having 用法与WHERE用法类似,但有三点不同1、having只用于group by(分组统计语句),2、where是用于在初始表中筛选查询,having用于在where和group by 结果中查询。3、having可以使用聚合函数,面where不能。select number from grade原创 2021-09-23 21:23:38 · 79 阅读 · 0 评论 -
SQL57
题目:使用含有关键字exists查找未分配具体部门的员工的所有信息。EXISTS语句:执行employees.length次指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。用EXISTS语句:select * from employees where not exists (select emp_no from dept_emp dewhere employees.emp_no = de.emp_no)不用EXISTS语句:原创 2021-09-22 20:44:56 · 78 阅读 · 0 评论 -
SQL53 按照dept_no进行汇总
题目:按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employeesselect dept_no, group_concat(emp_no) as employeesfrom dept_empgroup by dept_no;聚合函数group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号....原创 2021-09-21 23:46:41 · 93 阅读 · 0 评论 -
2021-09-19SQL42,SQL44,SQL45
SQL42.删除emp_no重复的记录,只保留最小的id对应的记录。delete from titles_testwhere id not in( select * from (select min(id) from titles_test group by emp_no) t1)SQL44.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现,直接使用update会报错。update原创 2021-09-20 00:04:22 · 88 阅读 · 0 评论 -
2021-09-18牛客SQL32,SQL33,SQL35,SQL36,SQL37,SQL38,SQL40
SQL32.sql字符串拼接(concat函数):将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持concat函数)select concat(last_name,' ',first_name) as name from employees//concat函数在sql语法中是做字符串拼接的;SQL33.创建表及字段:create table原创 2021-09-19 00:06:57 · 106 阅读 · 0 评论 -
牛客SQL22 统计各个部门的工资记录数
描述有一个部门表departments简况如下:有一个,部门员工关系表dept_emp简况如下:有一个薪水表salaries简况如下:请你统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum,按照dept_no升序排序,以上例子输出如下:我的思路:这是三表联合查询;JOIN连接dept_emp表和salaries表,并以dept_emp.no分组,统计每个部门所有员工工资的记录总数,再将上表用INNERJOI原创 2021-08-29 17:47:34 · 506 阅读 · 0 评论