牛客题霸SQL篇
牛客题霸SQL篇刷题笔记
学而不思则忘
一切都可以
展开
-
SQL求中位数(考试分数五)
题目描述请你写一个sql语句查询各个岗位分数的中位数位置上的所有grade信息,并且按id升序排序,结果如下:第1行表示C++岗位的中位数位置上的为用户id为2,分数为10000,在C++岗位里面排名是第2第2,3行表示Java岗位的中位数位置上的为用户id为4,5,分数为12000,13000,在Java岗位里面排名是第2,1第4行表示B语言岗位的中位数位置上的为用户id为7,分数为11000,在前端岗位里面排名是第2(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.原创 2021-03-30 11:44:07 · 1099 阅读 · 0 评论 -
牛客的课程订单分析(五)
题目描述有很多同学在牛客购买课程来学习,购买会产生订单存到数据库里。 有一个订单信息表(order_info),简况如下:第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-2原创 2021-03-27 15:41:02 · 1247 阅读 · 0 评论 -
实习广场投递简历分析(三)
题目描述在牛客实习广场有很多公司开放职位给同学们投递,同学投递完就会把简历信息存到数据库里。现在有简历信息表(resume_info),部分信息简况如下:第1行表示,在2025年1月2号,C++岗位收到了53封简历最后1行表示,在2027年2月6号,C++岗位收到了231封简历请你写出SQL语句查询在2025年投递简历的每个岗位,每一个月内收到简历的数量和,对应的2026年的同一个月同岗位,收到简历的数量,最后的结果先按first_year_mon月份降序,再按job降序排序显示,以上例子原创 2021-03-27 13:09:48 · 275 阅读 · 0 评论 -
查找当前薪水排名第二多的员工编号emp_no
请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为:解决方法SELECT e.emp_no, s.salary, e.last_name, e.first_nameFROM employees AS eINNER JOIN salaries AS sON e.emp_no = s.emp_noWHERE s.salary = (SELECT MAX(salary) ...原创 2021-03-27 12:39:42 · 165 阅读 · 0 评论 -
获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
解决方法关键在于查询到第二大的薪资SELECT emp_no, salaryFROM salariesWHERE salary = (SELECT DISTINCT salary FROM salaries ORDER BY salary DESC LIMIT 1, 1)SELECT emp_no, salaryFROM salariesWHERE salary = (SELECT sa.原创 2021-03-27 12:17:23 · 109 阅读 · 0 评论 -
统计出当前各个title类型对应的员工当前薪水对应的平均工资
题目描述请你统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序,以上例子输出如下:题解SELECT t.title, AVG(s.salary)FROM titles AS tINNER JOIN salaries as sON t.emp_no = s.emp_noGROUP BY t.title...原创 2021-03-27 12:06:54 · 169 阅读 · 0 评论 -
从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略——SQL.14
题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。注意对于重复的emp_no进行忽略(即emp_no重复的title不计算,title对应的数目t不增加)。CREATE TABLE IF NOT EXISTS `titles` (`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL,`to_date` date DEFAULT N原创 2021-01-01 20:03:52 · 152 阅读 · 0 评论 -
从titles表获取按照title进行分组——SQL.13
题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。CREATE TABLE IF NOT EXISTS "titles" (`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL,`to_date` date DEFAULT NULL);题解select title, count(title) as tfrom titles原创 2021-01-01 17:12:52 · 153 阅读 · 0 评论 -
获取所有部门中当前员工薪水最高的相关信息——SQL.12
题目描述获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工当前(salaries.to_date=‘9999-01-01’)薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号升序排列。CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` da原创 2020-12-30 11:35:49 · 391 阅读 · 0 评论 -
获取所有非manager的员工emp_no——SQL.10
题目描述获取所有非manager的员工emp_noCREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`原创 2020-12-21 16:34:37 · 71 阅读 · 0 评论 -
获取所有部门当前manager的当前薪水情况——SQL.9
题目描述获取所有部门当前(dept_manager.to_date=‘9999-01-01’)manager的当前(salaries.to_date=‘9999-01-01’)薪水情况,给出dept_no, emp_no以及salary,输出结果按照dept_no升序排列(请注意,同一个人可能有多条薪水情况记录)CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date原创 2020-12-21 16:21:39 · 164 阅读 · 0 评论 -
找出所有员工当前具体的薪水salary情况——SQL.8
题目描述找出所有员工当前(to_date=‘9999-01-01’)具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));解决方法使用distinc原创 2020-12-21 16:11:24 · 188 阅读 · 0 评论 -
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t——SQL.7
题目描述查找薪水变动超过15次的员工号emp_no以及其对应的变动次数tCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));解决方法用count()函数和group by语句可以统计同一emp_no值的记录条数原创 2020-12-21 14:31:19 · 219 阅读 · 0 评论 -
查找所有员工入职时候的薪水情况——SQL.6
题目描述查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NULL,`hi原创 2020-12-20 23:11:49 · 408 阅读 · 0 评论 -
查找所有员工的last_name和first_name以及对应部门编号dept_no——SQL.5
题目描述查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工(请注意输出描述里各个列的前后顺序)CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CRE原创 2020-12-20 22:41:51 · 214 阅读 · 0 评论 -
查找最晚入职员工的所有信息——SQL.1
题目描述查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为–,mysql为comment)CREATE TABLE `employees` (`emp_no` int(11) NOT NULL, -- '员工编号'`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char原创 2020-12-20 21:08:17 · 433 阅读 · 0 评论 -
查找入职员工时间排名倒数第三的员工所有信息——SQL.2
题目描述查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NULL,`hire_date` date NOT原创 2020-12-20 21:20:23 · 242 阅读 · 0 评论 -
查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no——SQL.3
题目描述查找各个部门当前(dept_manager.to_date=‘9999-01-01’)领导当前(salaries.to_date=‘9999-01-01’)薪水详情以及其对应部门编号dept_no(注:输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列)CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL, -- '员工编号',`salary` int(11) NOT NULL,`from原创 2020-12-20 22:17:17 · 1074 阅读 · 2 评论 -
查找所有已经分配部门的员工的last_name和first_name——SQL.4
题目描述查找所有已经分配部门的员工的last_name和first_name以及dept_no(请注意输出描述里各个列的前后顺序)CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `emplo原创 2020-12-20 22:30:12 · 177 阅读 · 0 评论