文章目录
一、查找最晚入职员工的所有信息
知识点:
sql语句中limit和offset的用法:
- limit子句用于限制查询结果返回的数量
- 用法:【
select * from table limit a,b;
】 - 其中a表示查询数据的起始位置,b表示返回的数量
limit y
表示读取y条数据limit x,y
表示从第x条数据开始,读取y条数据limit y offset x
表示从第x条数据开始读取y条数据- 默认从第0条开始
(一)使用limit关键字
代码如下:
select * from employees
order by hire_date desc
limit 0,1;
(二)使用limit和offset关键字
代码如下:
select * from employees
order by hire_date desc
limit 1 offset 0;
(三)使用子查询
select * from employees
where hire_date = (select max(hire_date) from employees);
二、查找入职员工时间排名倒数第三的员工所有信息
知识点:
distinct的用法:
- distinct关键字用于去重
(一)使用limit和offset关键字
代码如下:
select * from employees
order by hire_date desc
limit 1 offset 2;
(二)使用limit关键字
代码如下:
select * from employees
order by hire_date desc
limit 2,1;
(三)最佳子查询----考虑去重
代码如下:
select * from employees
where hire_date=
(select distinct hire_date from employees
order by hire_date desc
limit 1 offset 2);
三、找出所有员工当前薪水salary情况
(一)用distinct去重+降序排序
代码如下:
select distinct salary from salaries
order by salary desc;
(二)用group by 先分组,再降序排序
代码如下:
select salary from salaries
group by salary
order by salary desc;
四、 查找所有已经分配部门的员工的last_name和first_name以及dept_no
(一)where
代码如下:
select last_name,first_name,dept_no from employees,dept_emp
where employees.emp_no = dept_emp.emp_no;
(二)左连接
代码如下:
select a.last_name,a.first_name,b.dept_no
from dept_emp b left join employees a on a.emp_no = b.emp_no;
(三)内连接
代码如下:
select a.last_name,a.first_name,b.dept_no
from employees as a inner join dept_emp as b on a.emp_no = b.emp_no;
(四)连接查询
代码如下:
select a.last_name,a.first_name,b.dept_no
from employees as a join dept_emp as b on a.emp_no = b.emp_no;
(五)右连接
代码如下:
select a.last_name,a.first_name,b.dept_no
from employees as a right join dept_emp as b on a.emp_no = b.emp_no;
五、查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t
(一)group by + having
代码如下:
select emp_no,count(emp_no) as t
from salaries
group by emp_no
having t > 15;
知识点:
- where关键字无法和聚合函数一起使用
- 用到了聚合函数一般和having搭配
常见的聚合函数:
- sum(): 求和
- count():统计个数
- max():求最大值
- min():求最小值
- avg():求平均值
✨✨✨