ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

牛客SQL练习题

2021-06-19 11:04:33  阅读:195  来源: 互联网

标签:练习题 01 no salaries dept 牛客 emp SQL date


之前的综合题有点难度。

https://www.nowcoder.com/ta/sql

 

1.查找最晚入职员工的所有信息

使用子查询

# 日期相同也无碍
SELECT * FROM employees
        WHERE hire_date = (SELECT max(hire_date)
FROM employees)
# 只能输出一条
SELECT * FROM employees 
ORDER BY hire_date DESC LIMIT 1;

 

2.查找入职员工时间排名倒数第三的员工所有信息

先完成子查询,然后根据找到的时间排名,确定该员工所有的信息

# 若存在同一天多人入职,不好使
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1 OFFSET 2;
SELECT * FROM employees 
WHERE hire_date=(
SELECT DISTINCT hire_date 
FROM employees
ORDER BY hire_date DESC LIMIT 1 OFFSET 2
);

 

3.查找当前薪水详情以及部门编号dept_no

只使用where

使用内连接

使用右连接

select salaries.emp_no,salary,from_date,salaries.to_date,dept_no 
from salaries,dept_manager
where salaries.emp_no = dept_manager.emp_no
and dept_manager.to_date='9999-01-01'
and salaries.to_date='9999-01-01' order by salaries.emp_no;
select s.*,d.dept_no
from salaries as s inner join dept_manager as d
on s.emp_no = d.emp_no
where s.to_date = '9999-01-01'
and d.to_date = '9999-01-01';
select s.*,d.dept_no
from salaries as s right join dept_manager as d
on s.emp_no = d.emp_no

 

4.查找所有已经分配部门的员工的last_name和first_name以及dept_no

右连接

select e.last_name,e.first_name,d.dept_no
from employees as e right join dept_emp as d
on e.emp_no = d.emp_no;

 

5.查找所有员工的last_name和first_name以及对应部门编号dept_no

左连接

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

 

标签:练习题,01,no,salaries,dept,牛客,emp,SQL,date
来源: https://www.cnblogs.com/Cookie-Jing/p/14902281.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有