码迷,mamicode.com
首页 > 数据库 > 详细

数据库-SQL语句练习

时间:2019-09-07 00:41:33      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:条件   and   employees   sel   man   join   code   --   题目   

练习题链接:https://www.nowcoder.com/ta/sql?page=0

 

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

SELECT *
FROM employees
ORDER BY hire_date DESC LIMIT 0,1;

 

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

SELECT *
FROM employees
ORDER BY hire_date DESC LIMIT 2,1;

 

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

查找各个部门当前(to_date=‘9999-01-01‘)领导当前薪水详情以及其对应部门编号dept_no

错误尝试第二次【原因:①表的先后出错;②to_date两次限定条件】

SELECT d.emp_no,s.salary,s.from_date,s.to_date,d.dept_no
FROM dept_manager AS d
INNER JOIN salaries AS s
ON d.emp_no=s.emp_no
WHERE d.to_date=9999-01-01;

正确语句:

SELECT s.*,d.dept_no
FROM salaries AS s
INNER JOIN dept_manager AS d
ON d.emp_no=s.emp_no
WHERE d.to_date=9999-01-01
AND s.to_date=9999-01-01;

关于为什么一定要两个表格的时间都限制成规定时间(9999-01-01)呢?

-----因为薪水表是按年发的,而题目要查找的是当前的薪水,所以要过滤掉以前,而dept_manager是因为有领导会离职,to_date时间不一定是9999-01-01,所以要过滤过离职的领导
 

4,查找所有已经分配部门的员工的last_name和first_name

错误尝试第二次【原因查找到:,的中文标点导致的】

SELECT e.last_name,e.first_name,d.dept_no
FROM dept_emp AS d
INNER JOIN employees AS e
ON e.emp_no=d.emp_no;

正确的语句:

SELECT e.last_name,e.first_name,d.dept_no
FROM dept_emp AS d
INNER JOIN employees AS e
ON e.emp_no=d.emp_no;

 

5,查找所有员工的last_name和first_name以及对应部门编号dept_no【LEFT ,RIGHT ,INNER JOIN】

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;

 

数据库-SQL语句练习

标签:条件   and   employees   sel   man   join   code   --   题目   

原文地址:https://www.cnblogs.com/Mufasa/p/11478958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!