美文网首页
SQL语句训练11-15

SQL语句训练11-15

作者: jchen104 | 来源:发表于2018-12-24 16:55 被阅读0次

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

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

相关文章

  • SQL语句训练11-15

    11.题目描述获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_dat...

  • HQL操作之DQL命令

    题记 本文部分资料来源于拉钩大数据高薪训练营 select 语法: SQL语句书写注意事项: SQL语句对大小写不...

  • SQL进阶练习题11-15

    SQL进阶练习题11-15 大背景和建表、插入语句就不啰嗦了,参考第一篇。 四张表概要: 学生表student(s...

  • MySql分组查询前N条记录

    Sql语句 SQL语句解析

  • 插入数据并获取自增ID

    方法一:SQL语句 方法二:SQL语句 方法三:SQL语句 方法二:JDBC

  • SQL语句的优化

    sql语句的优化:多使用共享语句 尽量使你的sql语句能够使用索引。怎样使sql语句能够使用到索引呢:当sql语句...

  • sql

    sql经典语句经典SQL语句大全(绝对的经典) - 浪迹天涯芳草 - 博客园 sql语法SQL语句查询语句完整语法...

  • 存储过程

    定义: 一组预编译好的SQL语句,可以理解成批量处理语句. 存储过程a : (SQL语句1;SQL语句2;SQL语...

  • mysql sql层分析 优化过程分析

    sql层 sql层接口接收sql语句 判断sql语句类型dml update select insertddl ...

  • oracle 存储过程执行动态sql实例

    1 概述 oracle的动态sql是指在语句块使用execute immediate 执行sql语句,sql语句可...

网友评论

      本文标题:SQL语句训练11-15

      本文链接:https://www.haomeiwen.com/subject/fjvzkqtx.html