美文网首页
SQL语句训练1-5

SQL语句训练1-5

作者: jchen104 | 来源:发表于2018-12-22 14:19 被阅读0次

题目地址
https://www.nowcoder.com/activity/oj

1.题目描述
查找最晚入职员工的所有信息
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 max(hire_date) from employees;

select * from employees
where hire_date=
(select max(hire_date) from employees);

2.题目描述
查找入职员工时间排名倒数第三的员工所有信息
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 distinct hire_date 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 2,1);

3.题目描述
查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号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));
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));

两张表内连接后把领导查询出来

select t1.*,dept_no 
from salaries as t1 
inner join dept_manager as t2
on t1.emp_no=t2.emp_no
where t1.to_date='9999-01-01' and t2.to_date='9999-01-01';

4.题目描述
查找所有已经分配部门的员工的last_name和first_name
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 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 t1.last_name,t1.first_name,t2.dept_no
from employees as t1
natural join dept_emp as t2;

5.查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工(这题似乎存在问题,dept_no设置为了not null却不能使用等值连接来做)
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 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));

假设dept_no存在null,我们可以使用左连接来操作
内左右连接的不同在我博客里有解释
https://blog.csdn.net/wzngzaixiaomantou/article/details/81807714

select t1.last_name,t1.first_name,t2.dept_no
from employees as t1
left join dept_emp as t2
on t1.emp_no=t2.emp_no;

相关文章

  • SQL语句训练1-5

    题目地址https://www.nowcoder.com/activity/oj 1.题目描述查找最晚入职员工的所...

  • HQL操作之DQL命令

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

  • 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 语句教程

    SQL 语句教程 SQL语句教程(01) SELECT.................................

网友评论

      本文标题:SQL语句训练1-5

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