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

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

作者: Sunny_Liao | 来源:发表于2021-07-14 23:59 被阅读0次

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题

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