目录
3、查找所有已经分配部门的员工的last_name、first_name以及dept_no
4、查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t
5、找出所有员工当前薪水salary情况、相同的薪水只显示一次,并按照逆序显示
7、查找employees表emp_no与last_name的员工信息
8、获取薪水第二多的员工的emp_no以及其对应的薪水salary,若有多个员工的薪水为第二多的薪水,全部输出并按emp_no升序排序。
9、所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
10、对于表actor批量插入数据(不能有2条insert语句)
11、删除emp_no重复的记录,只保留最小的id对应的记录
12、将所有to_date为9999-01-01的全部更新为NULL
13、将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
14、将titles_test表名修改为titles_2017
1、 查找最晚入职员工的所有信息
# 方法一 :limit存在争议,可能有多位入职最晚的员工
select * from employees
order by hire_date desc
limit 1;
# 方法三:使用limit 与 offset关键字
select * from employees
order by hire_date desc
limit 1 offset 0;
# 方法四:使用limit关键字 从第0条记录 向后读取一个,也就是第一条记录
select * from employees
order by hire_date desc
limit 0,1;
# 方法五:使用子查询
select * from employees
where hire_date = (select max(hire_date) from employees);
2、查找入职员工时间排名倒数第三的员工所有信息
# 方法一:子查询
# limit和offset组合,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量
select * from employees
where hire_date = (
select distinct hire_date from employees e
order by hire_date desc
limit 1 offset 2);
# 方法二:dense_rank() 窗口函数
select emp_no,birth_date,first_name,last_name,gender,hire_date
from(
select *,
dense_rank() over(order by hire_date desc )as n
from employees
) a
where n=3;
3、查找所有已经分配部门的员工的last_name、first_name以及dept_no
# where条件
SELECT e.last_name, e.first_name, d.dept_no
FROM employees AS e, dept_emp AS d
WHERE e.emp_no = d.emp_no;
# 左联结
SELECT e.last_name, e.first_name, d.dept_no
FROM employees AS e INNER JOIN dept_emp AS d
ON e.emp_no=d.emp_no;
4、查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t
SELECT emp_no, COUNT(emp_no) AS t
FROM salaries
GROUP BY emp_no
HAVING t > 15; -- 组筛选条件
5、找出所有员工当前薪水salary情况、相同的薪水只显示一次,并按照逆序显示
# 方法一:distinct+order by
SELECT DISTINCT salary
FROM salaries
WHERE to_date='9999-01-01'
ORDER BY salary DESC;
# 方法二:group by
SELECT salary
FROM salaries
WHERE to_date='9999-01-01'
GROUP BY salary
ORDER BY salary DESC
6、获取所有非manager的员工emp_no,
# 方法1:NOT IN+子查询
select emp_no
from employees
where emp_no not in (select emp_no from dept_manager);
# 方法2:LEFT JOIN左连接+IS NULL 以左表为主,结果右边的结果为空,说明就没有在右表出现过
SELECT e.emp_no
FROM employees AS e
LEFT JOIN dept_manager AS d
ON e.emp_no=d.emp_no
WHERE dept_no IS NULL;
7、查找employees表emp_no与last_name的员工信息
查找employees表所有emp_no为奇数&#x