MySQL(二)

牛客网题霸SQL篇(011-020)


011

题目描述:获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示。

背景描述:

员工表

部门经理表

题解:

select e.emp_no,m.emp_no as manager 
from dept_emp e 
inner join dept_manager1 m 
on e.dept_no = m.dept_no 
where e.to_date = '9999-01-01' 
and m.to_date = '9999-01-01' 
and e.emp_no != m.emp_no

运行结果:

注意:

  1. 用 INNER JOIN 连接两张表,因为要输出自己的经理编号,得知自己与经理的部门要相同,故有限制条件 e.dept_no = m.dept_no
  2. 再用 WHERE 限制当前员工与当前经理的条件,即 m.to_date 等于 '9999-01-01' 、e.to_date 等于 '9999-01-01' 、 e.emp_no 不等于 m.emp_no
  3. 为了增强代码可读性,将 dept_emp 用别名 e 代替,dept_manager 用 m 代替,最后根据题意将 de.emp_no 用别名 manager代替后输出

012

题目描述:获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号升序排列。

背景描述:

员工表

薪水表

题解:

select r.dept_no,ss.emp_no,r.maxSalary from (
select d.dept_no,max(s.salary)as maxSalary from dept_emp d,salaries s
where d.emp_no=s.emp_no
and d.to_date='9999-01-01' 
and s.to_date='9999-01-01'
group by d.dept_no
)as r,salaries ss,dept_emp dd
where r.maxSalary=ss.salary
and r.dept_no=dd.dept_no
and dd.emp_no=ss.emp_no
and ss.to_date='9999-01-01'
and dd.to_date='9999-01-01'
order by r.dept_no asc;

运行结果:

013

题目描述:查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列。

背景描述:

员工表

题解:

select * from employees where emp_no & 1 and last_name !='Mary' order by hire_date desc;
select * from employees where emp_no%2=1 and last_name !='Mary' order by hire_date desc;

运行结果:

补充:

  • 不相等有三种表示方式:<>、!=、IS NOT;
  • 查询奇数的表示方式:%取余;&1:1的二进制是0001,与运算符:1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0;所以可以保证最后一位是奇数。

014

题目描述:请你统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序。

员工职称表

薪水表

题解:

select t.title,avg(s.salary) as avg 
from salaries s 
join titles t 
on s.emp_no = t.emp_no 
and t.to_date='9999-01-01' 
and s.to_date='9999-01-01' 
group by title;

运行结果:

015

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值