SQL语句训练11-15
11.题目描述
获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'。
结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no。
CREATE TABLE dept_emp
(
emp_no
int(11) NOT NULL,
dept_no
char(4) NOT NULL,
from_date
date NOT NULL,
to_date
date NOT NULL,
PRIMARY KEY (emp_no
,dept_no
));
CREATE TABLE dept_manager
(
dept_no
char(4) NOT NULL,
emp_no
int(11) NOT NULL,
from_date
date NOT NULL,
to_date
date NOT NULL,
PRIMARY KEY (emp_no
,dept_no
));
要求不显示自己是领导的员工,所以需要多加几个and来判断
select e.emp_no,m.emp_no as manager_no
from dept_manager m,dept_emp e
where e.dept_no = m.dept_no
and e.emp_no != m.emp_no
and m.to_date='9999-01-01';
12题目描述
获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary
CREATE TABLE
dept_emp
(emp_no
int(11) NOT NULL,dept_no
char(4) NOT NULL,from_date
date NOT NULL,to_date
date NOT NULL,PRIMARY KEY (
emp_no
,dept_no
));
CREATE TABLE
salaries
(emp_no
int(11) NOT NULL,salary
int(11) NOT NULL,from_date
date NOT NULL,to_date
date NOT NULL,PRIMARY KEY (
emp_no
,from_date
));
首先进行等值连接,然后对部门聚合后对工资属性使用max()函数
select t2.dept_no, t1.emp_no, max(t1.salary) as salary
FROM salaries as t1 inner join dept_emp as t2
on t1.emp_no = t2.emp_no
where t1.to_date = '9999-01-01' and t2.to_date = '9999-01-01'
group by t2.dept_no
13从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
CREATE TABLE IF NOT EXISTS "titles" (
emp_no
int(11) NOT NULL,title
varchar(50) NOT NULL,from_date
date NOT NULL,to_date
date DEFAULT NULL);
这题就很简单了,考察了聚合函数的使用
select title,count(title) as nums
from titles
group by title
having count(title)>=2
14题目描述
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
注意对于重复的emp_no进行忽略。
CREATE TABLE IF NOT EXISTS "titles" (
emp_no
int(11) NOT NULL,title
varchar(50) NOT NULL,from_date
date NOT NULL,to_date
date DEFAULT NULL);
select title,count(distinct emp_no) as nums
from titles
group by title
having count(title)>=2
【SQL语句训练11-15】15
题目描述
查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列
CREATE TABLE
employees
(emp_no
int(11) NOT NULL,birth_date
date NOT NULL,first_name
varchar(14) NOT NULL,last_name
varchar(16) NOT NULL,gender
char(1) NOT NULL,hire_date
date NOT NULL,PRIMARY KEY (
emp_no
));
就是田间多了些,没什么难度
select * from employees
where emp_no % 2 = 1
and last_name != 'Mary'
order by hire_date desc
推荐阅读
- 绘本讲师训练营【24期】14/21阅读原创《小黑鱼》
- 绘本讲师训练营【18期】14/21《我的情绪小怪兽》故事会新体验
- 合理情绪疗法之试用|李克富思维训练营56/90
- 绘本讲师训练营7期9/21阅读原创《蜗牛屋|绘本讲师训练营7期9/21阅读原创《蜗牛屋 》
- 拆书方法训练营
- 阿菘的ScalersTalk第五轮新概念朗读持续力训练Day15|阿菘的ScalersTalk第五轮新概念朗读持续力训练Day15 20191025
- 特种兵训练第四天
- 2018-09-03(李克富视角点评训练营81/90)|2018-09-03(李克富视角点评训练营81/90) 那只蛙从“井”爬出来又进入了“隧道”
- 学员+3组杨子涓+202002RIA训练营W3D2+苏格拉底提问法
- 绘本讲师训练营【28期】15/21阅读原创《活了100万次的猫》