牛客
文章平均质量分 77
记载每天在牛客刷的题
双人与余
熟能生巧
展开
-
牛客SQL练习第30题
题目描述film表CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));category表CREATE TABLE category (category_id tinyint(3) NOT NULL ,name varchar(25) NOT NUL原创 2020-11-06 12:37:40 · 216 阅读 · 0 评论 -
牛客SQL练习第29题
题目描述film表CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));category表CREATE TABLE category (category_id tinyint(3) NOT NULL ,name varchar(25) NOT NUL原创 2020-11-06 12:34:53 · 237 阅读 · 0 评论 -
牛客SQL练习第28题
题目描述film表CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));category表CREATE TABLE category (category_id tinyint(3) NOT NULL ,name varchar(25) NOT NUL原创 2020-11-05 12:31:42 · 199 阅读 · 0 评论 -
牛客SQL练习第27题
题目描述给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。提示:在sqlite中获取datetime时间对应的年份函数为strftime(’%Y’, to_date)(数据保证每个员工的每条薪水记录to_date-from_date=1年,而且同一员工的下一条薪水记录from_data=上一条薪水记录的to_data)CREATE TABLE `salaries` (`e原创 2020-11-05 12:28:00 · 137 阅读 · 0 评论 -
牛客SQL练习第26题
题目描述汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的当前(dept_emp.to_date = ‘9999-01-01’)员工的当前(titles.to_date = ‘9999-01-01’)title以及该类型title对应的数目count(注:因为员工可能有离职,所有dept_emp里面to_date不为’9999-01-01’就已经离职了,不计入统计,而且员工可能有晋升,所以如果titles.to_date 不为 ‘9999原创 2020-11-04 12:40:50 · 189 阅读 · 1 评论 -
牛客SQL练习第25题
题目描述获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date=‘9999-01-01’,结果第一列给出员工的emp_no,第二列给出其manager的manager_no,第三列给出该员工当前的薪水emp_salary,第四列给该员工对应的manager当前的薪水manager_salaryCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_d原创 2020-11-04 12:38:03 · 132 阅读 · 0 评论 -
牛客SQL练习第23题
题目描述对所有员工的当前(to_date=‘9999-01-01’)薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列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`));解答:对排原创 2020-11-03 12:38:39 · 188 阅读 · 0 评论 -
牛客SQL练习第24题
题目描述获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date=‘9999-01-01’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 TA原创 2020-11-03 12:35:39 · 125 阅读 · 0 评论 -
牛客SQL练习第22题
题目描述统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sumCREATE TABLE `departments` (`dept_no` char(4) NOT NULL,`dept_name` varchar(40) NOT NULL,PRIMARY KEY (`dept_no`));CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char原创 2020-11-02 12:24:37 · 173 阅读 · 0 评论 -
牛客SQL练习第21题
题目描述查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面)CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT原创 2020-11-02 12:21:27 · 214 阅读 · 0 评论 -
牛客SQL练习第20题
题目描述查找员工编号emp_no为10001其自入职以来的薪水salary涨幅(总共涨了多少)growth(可能有多次涨薪,没有降薪)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`));解答:最近的工资减去首次工资,即原创 2020-10-30 12:08:57 · 118 阅读 · 0 评论 -
牛客SQL练习第19题
题目描述查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工CREATE TABLE `departments` (`dept_no` char(4) NOT NULL,`dept_name` varchar(40) NOT NULL,PRIMARY KEY (`dept_no`));CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT N原创 2020-10-30 12:05:03 · 123 阅读 · 0 评论 -
牛客SQL练习第18题
题目描述查找当前薪水(to_date=‘9999-01-01’)排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,你可以不使用order by完成吗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,`gende原创 2020-10-29 12:29:36 · 161 阅读 · 0 评论 -
牛客SQL练习第17题
题目描述获取当前(to_date=‘9999-01-01’)薪水第二多的员工的emp_no以及其对应的薪水salaryCREATE 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`));解答:先得到排第二的工资,在作为条件查询即可s原创 2020-10-29 12:14:04 · 102 阅读 · 0 评论 -
牛客SQL练习第16题
题目描述统计出当前(titles.to_date=‘9999-01-01’)各个title类型对应的员工当前(salaries.to_date=‘9999-01-01’)薪水对应的平均工资。结果给出title以及平均工资avg。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原创 2020-10-28 12:30:42 · 162 阅读 · 0 评论 -
牛客SQL练习第15题
题目描述查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数)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)原创 2020-10-28 12:26:45 · 133 阅读 · 0 评论 -
牛客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 NUL原创 2020-10-27 12:14:13 · 122 阅读 · 0 评论 -
牛客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(emp_no)from title原创 2020-10-27 12:12:12 · 144 阅读 · 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` date原创 2020-10-26 12:43:08 · 223 阅读 · 0 评论 -
牛客SQL练习第11题
题目描述获取所有员工当前的(dept_manager.to_date=‘9999-01-01’)manager,如果员工是manager的话不显示(也就是如果当前的manager是自己的话结果不显示)。输出结果第一列给出当前员工的emp_no,第二列给出其manager对应的emp_no。CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL, -- '所有的员工编号'`dept_no` char(4) NOT NULL, -- '部门编号'`from原创 2020-10-26 12:28:33 · 154 阅读 · 0 评论 -
牛客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,`b原创 2020-10-23 12:55:52 · 136 阅读 · 0 评论 -
牛客SQL练习第9题
题目描述获取所有部门当前(dept_manager.to_date=‘9999-01-01’)manager的当前(salaries.to_date=‘9999-01-01’)薪水情况,给出dept_no, emp_no以及salary(请注意,同一个人可能有多条薪水情况记录)CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to原创 2020-10-23 12:48:32 · 167 阅读 · 0 评论 -
牛客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`));解答:去重可以使用distin原创 2020-10-22 12:23:48 · 206 阅读 · 0 评论 -
牛客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`));解答:按员工进行分组,统计其工资条数进行判断即可select emp_no ,count(t原创 2020-10-22 12:19:12 · 184 阅读 · 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,`hire原创 2020-10-21 12:27:23 · 179 阅读 · 0 评论 -
牛客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`));CREA原创 2020-10-21 12:20:56 · 141 阅读 · 0 评论 -
牛客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 employees (emp_no int原创 2020-10-20 12:44:30 · 129 阅读 · 0 评论 -
牛客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_d原创 2020-10-20 12:36:24 · 188 阅读 · 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 NULL,PRIMARY原创 2020-10-19 12:50:57 · 183 阅读 · 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(1原创 2020-10-19 12:17:56 · 109 阅读 · 0 评论 -
剑指Offer 03 从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。说明:本题目包含复杂数据结构ListNode,点此查看相关信息解答读完题第一想法就先正序存储链表,再从尾到头遍历/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }原创 2020-09-23 23:21:38 · 89 阅读 · 0 评论 -
剑指Offer02 替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解答第一想法是直接调用replace方法public String replaceSpace(StringBuffer str) { int index = str.indexOf(" "); while(index != -1){ str.replace(index,index+1,"%20");原创 2020-09-23 22:59:01 · 91 阅读 · 0 评论 -
剑指Offer 07 斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39解答:斐波那契数列特特点是前两项为1,后面所有项都是前两项之和。即当n>=2时,有A(n)=A(n-1)+A(n-2)根据这个公式很自然的想到递归法:public class Solution { public int Fibonacci(int n) { int result; if(n<=0) retur原创 2020-09-21 22:49:21 · 126 阅读 · 0 评论 -
剑指Offer 01 二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解答:先和二维数组最右上角的值比较,比它小就往左走继续比较,比它大就向下继续比较,循环此过程知道找到相等的值,如果走出去了还没找到就返回falsepublic class Solution { public boolean Find(int [][] array,int target) {原创 2020-09-20 23:27:29 · 93 阅读 · 0 评论 -
牛客SQL练习第75题
题目描述牛客每次考试完,都会有一个成绩表(grade),如下:第1行表示用户id为1的用户选择了C++岗位并且考了11001分。。。第8行表示用户id为8的用户选择了前端岗位并且考了9999分请你写一个sql语句查询各个岗位分数升序排列之后的中位数位置的范围,并且按job升序排序,结果如下:解释:第1行表示C++岗位的中位数位置范围为[2,2],也就是2。因为C++岗位总共3个人,是奇数,所以中位数位置为2是正确的(即位置为2的10000是中位数)第2行表示Java岗位的中位数位置范围为原创 2020-09-20 22:51:47 · 376 阅读 · 1 评论 -
牛客SQL练习第73题
题目描述牛客每次考试完,都会有一个成绩表(grade),如下:第1行表示用户id为1的用户选择了C++岗位并且考了11001分。。。第8行表示用户id为8的用户选择了前端岗位并且考了9999分请你写一个sql语句查询用户分数大于平均分的所有grade的属性,并且以id的升序排序,如下:(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5,sqlite四舍五入的函数为round)解答:得到平均成绩表后连接成绩表即可select g.*from g原创 2020-09-20 22:42:30 · 380 阅读 · 0 评论 -
牛客SQL练习第72题
题目描述牛客每次考试完,都会有一个成绩表(grade),如下:第1行表示用户id为1的用户选择了C++岗位并且考了11001分。。。第8行表示用户id为8的用户选择了前端岗位并且考了9999分请你写一个sql语句查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入):(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5,sqlite四舍五入的函数为round)解答:select job,round(sum(sco原创 2020-09-20 22:38:12 · 231 阅读 · 0 评论 -
牛客SQL练习第70题
题目描述牛客每天有很多人登录,请你统计一下牛客每个日期登录新用户个数,有一个登录(login)记录表,简况如下:第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网,因为是第1次登录,所以是新用户。。。第4行表示id为2的用户在2020-10-13使用了客户端id为2的设备登录了牛客网,因为是第2次登录,所以是老用户。。第4行表示id为4的用户在2020-10-15使用了客户端id为1)的设备登录了牛客网,因为是第2次登录,所以是老用户请你写出一个sql语句原创 2020-09-18 12:54:46 · 406 阅读 · 0 评论 -
牛客SQL练习第69题
题目描述牛客每天有很多人登录,请你统计一下牛客新登录用户的次日成功的留存率,有一个登录(login)记录表,简况如下:第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备第一次新登录了牛客网。。。第4行表示id为3的用户在2020-10-14使用了客户端id为2的设备登录了牛客网请你写出一个sql语句查询新登录用户次日成功的留存率,即第1天登陆之后,第2天再次登陆的概率,保存小数点后面3位(3位之后的四舍五入),上面的例子查询结果如下:查询结果表明:id为2的用户在2原创 2020-09-18 12:44:29 · 347 阅读 · 0 评论 -
牛客SQL练习第68题
题目描述牛客每天有很多人登录,请你统计一下牛客每个用户最近登录是哪一天,用的是什么设备.有一个登录(login)记录表,简况如下:第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网。。。第4行表示id为3的用户在2020-10-13使用了客户端id为2的设备登录了牛客网还有一个用户(user)表,简况如下:还有一个客户端(client)表,简况如下:请你写出一个sql语句查询每个用户最近一天登录的日子,用户的名字,以及用户用的设备的名字,并且查询结果按原创 2020-09-15 12:10:28 · 225 阅读 · 0 评论