【SQL】刷题整理[一]

本文介绍了如何使用SQL查询获取最晚入职员工、入职时间倒数第三的员工以及所有员工的当前薪水详情。通过limit和offset关键字、子查询以及连接查询等方法,实现对员工数据的高效检索。同时,展示了如何查找已分配部门的员工的姓名和部门编号。最后,展示了如何找出薪水记录超过15次的员工及其记录次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查找最晚入职员工的所有信息

在这里插入图片描述

知识点:

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():求平均值

✨✨✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值