【Mysql】专项练习+简单函数总结

题目参考牛客网

1.查找入职员工时间排名倒数第三的员工所有信息
题目:employees表
在这里插入图片描述
示例
在这里插入图片描述

  • desc用法
    (1)查看表结构的详细信息: desc table_name;
    (2)降序排列数据:order by information desc
    升序排列数据:order by information asc

  • distinct:对表中一个或者多个字段重复的数据进行过滤,只在select中使用
    select distinct expression...

  • limit (搜索表结构中的某些部分的数据)
    limit 0,10 等价于 limit 10:从头开始取表中的前10条信息
    limit 5,10 等价于 limit 10 offset 5:检索表中第6~15行数据

  • 题解:
    法1:

select * from employees
where hire_date = (
select distinct hire_date 
from employees
order by hire_date  desc
limit 2,1 );

法2:

select * from employees
where hire_date = (
select distinct hire_date
from employees
order by hire_date desc
limit 1 offset 2);

2.查找各个部门领导薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列
题目:salaries表:

有一个各个部门的领导表dept_managr:
在这里插入图片描述
示例
在这里插入图片描述

  • 题解:
select salaries.emp_no,salaries.salary,salaries.from_date,salaries.to_date,dept_manager.dept_no
from salaries,dept_manager
where salaries.emp_no = dept_manager.emp_no
and salaries.to_date='9999-01-01'
and dept_manager.to_date='9999-01-01'
order by salaries.emp_no

3.查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t

题目:salaries表:在这里插入图片描述示例:
在这里插入图片描述

  • group by :根据给定数据列的每个成员对查询结果进行分组统计
    (1)分组查询可以在形成组和计算列函数之前具有消除非限定行的标准where子句。必须在GROUP BY子句之前指定WHERE子句
    (2)GROUP BY子句之后使用Having子句
    (3)WHERE过滤行,HAVING过滤组

  • 题解:

select emp_no,count(emp_no) as t
from salaries
group by emp_no
having t>15

4.获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示
题目:有一个员工表dept_emp简况如下:

有一个部门经理表dept_manager简况如下:
在这里插入图片描述
示例:
在这里插入图片描述

  • 内连接:inner join 【返回table_1和table_2的交集】
    select * from table_1 inner join table_2 on table_1.id = table_2.id;

  • 左连接:left join【返回table_1中所有记录和table_2中满足条件的记录,且table_1中有记录但table_2中没有的记录记为NULL】
    select * from table_1 left join table_2 on table_1.id = table_2.id;

  • 右连接:right join【返回table_2中所有记录和table_1中满足条件的记录,且table_2中有记录但table_1中没有的记录记为NULL】
    select * from table_1 right join table_2 on table_1.id = table_2.id;

  • 题解:

select dept_emp.emp_no,dept_manager.emp_no as manager
from dept_emp inner join dept_manager
on dept_emp.dept_no=dept_manager.dept_no
and dept_emp.emp_no != dept_manager.emp_no;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值