2021-07-14 SQL(牛客网)刷题 8、10、11题

SQL8 找出所有员工当前薪水salary情况



SQL 8 题目


SQL 8 题目

解答:

方法一

使用group by

select salary

from salaries

where to_date = '9999-01-01'

group by salary

order by salary desc

方法二

使用distinct关键字

select dintinct salary

from salaries

where to_date = '9999-01-01'

order by salary desc

疑惑:看评论区说group by 比distinct 好,不知道这两者主要的是区别在什么地方?



SQL10 获取所有非manager的员工emp_no



SQL 10 题目


SQL 10 题目

解答:

法一:内连接

SELECT emp_no 

FROM employees

where emp_no  not in               ##注意,这是的语法是not in, 而不是is not in

(SELECT emp_no FROM dept_manager)

法二:左连接+NULL

select e.emp_no

from employees as e 

left join dept_manager as d 

on d.emp_no = e.emp_no

where d.dept_no is null

本身题目不难,manager就是有dept_no的人,d.dept_no is null就是非manager的员工




SQL11 获取所有员工当前的manager



SQL 11 题目


SQL 11 题目


SQL 11 题目

注意审题:

获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示

解答:

SELECT

de.emp_no,

dm.emp_no AS manager

FROM

dept_emp AS de

INNER JOIN dept_manager AS dm ON de.dept_no = dm.dept_no

WHERE

de.emp_no != dm.emp_no   #   员工不为manager

AND de.to_date = "9999-01-01"

AND dm.to_date = "9999-01-01"

补充:别名最好取de,dm

补充:不等于可以用<>或者!=表示

你可能感兴趣的:(2021-07-14 SQL(牛客网)刷题 8、10、11题)