牛客网MYSQL练习题
1,对时间函数多使用,灵活使用。
2.查找入职员工时间排名倒数第三的员工所有信息
对于此类题目不能盲目的排序,然后LIMIT 最好通过子查询先取重一遍。
select *
from
employees
where hire_date=(select distinct hire_date from employees order by hire_date desc limit 2,1);
3.!= ,<>,只用于单值的判断,这里emp_no有多值,只能用in
4.mod(id,2)=1 奇数的取法
5.查找当前薪水(to_date=‘9999-01-01’)排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
SELECT e.emp_no,salary,last_name,first_name FROM employees e
JOIN
salaries s
ON e.emp_no=s.emp_no AND to_date='9999-01-01'
WHERE salary=(SELECT MAX(salary) FROM salaries WHERE salary<(select max(salary) from salaries))
不用order by的话,那么通过子查询选择最高的,然后再在最高里面选择小于他的最高的
6.查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth
SELECT (
(SELECT salary FROM salaries WHERE emp_no = 10001 ORDER BY to_date DESC LIMIT 1) -
(SELECT salary FROM salaries WHERE emp_no = 10001 ORDER BY to_date ASC LIMIT 1)
) AS growth