SQL数据库实战
- 牛客网
-
- 1. 查找最晚入职员工的所有信息
- 2. 查找入职员工时间排名倒数第三的员工所有信息
- 3. 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no
- 4. 查找所有已经分配部门的员工的last_name和first_name
- 5. 查找所有员工的last_name和first_name以及对应部门编号dept_no
- 6. 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
- 7. 找出所有员工当前具体的薪水salary情况
- 8. 获取所有非manager的员工emp_no
- 9. 获取所有员工当前的manager
- 10. 获取所有部门中当前员工薪水最高的相关信息
- 11. 查找employees表所有emp_no为奇数
- 12.
- 13.
- 14.
- 15.
- 16.
- 21. 统计各个部门的工资记录数
- 22. 对所有员工的薪水按照salary进行排名
- 23. 获取所有非manager员工当前的薪水情况
- 24. 获取员工当前的薪水比其manager当前薪水还高的相关信息
- 24. 汇总各个部门当前员工的title类型的分配数目
- 25.
冲!目标是成为一名合格的数据分析师!
牛客网
指路:https://www.nowcoder.com/ta/sql
1. 查找最晚入职员工的所有信息
SELECT *
FROM employees
WHERE hire_date = (
SELECT MAX(hire_date)
FROM employees)
2. 查找入职员工时间排名倒数第三的员工所有信息
SELECT a.emp_no, a.birth_date, a.first_name, a.last_name, a.gender, a.hire_date
FROM (
SELECT *, DENSE_RANK()OVER(ORDER BY hire_date DESC) AS orders
FROM employees
) AS a
WHERE a.orders = 3
SELECT *
FROM employees
ORDER BY hire_date DESC
LIMIT 2,1
SELECT *
FROM employees
ORDER BY hire_date DESC
LIMIT 1 OFFSET 2
LIMIT M OFFSET N = LIMIT N, M 从第N+1行开始取M条记录。
排序函数的区别:ROW_NUMBER()/RANK()/DENSE_RANK()/NTILE() OVER(PARTITION BY * ORDER BY * DESC/ASC)
3. 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no
SELECT s.*, d.dept_no
FROM dept_manager d
JOIN salaries s ON d.emp_no = s.emp_no
ORDER BY s.emp_no ASC
分清join、left jion、right jion、inner join、full outer join的区别。
4. 查找所有已经分配部门的员工的last_name和first_name
SELECT e.last_name, e.first_name, d.dept_no
FROM dept_emp d
LEFT JOIN employees e ON d.emp_no = e.emp_no
SELECT e.last_name, e.first_name, d.dept_no
FROM employees AS e, dept_emp AS d
W