牛客网数据库SQL实战详细剖析(21-25)

SQL21 查找在职员工自入职以来的薪水涨幅情况

select a.emp_no, (a.salary - b.salary) growthfrom (select emp_no,salary from salaries where to_date = '9999-01-01') a, (select s.emp_no,salary from salaries s join employees e on s.emp_no=e.emp_no and s.from_date = e.hire_date) bwhere a.emp_no = b.emp_noorder by growth

解题思路:

①先创建两个子查询,分别找出所有员工当前的薪水(如子查询a)和所有员工入职时的薪水(如子查询b);

②子查询a限定条件直接为当前时间'9999-01-01',子查询b限定条件为入职时间;

③最后将这两个子查询联结,联结条件为a.emp_no = b.emp_no,再按照题目要求对薪水涨幅进行升序排序。

SQL22 统计各个部门的工资记录数

select d.dept_no, d.dept_name, count(s.salary)from departments dleft join dept_emp de on de.dept_no = d.dept_noleft join salaries s on s.emp_no = de.emp_nogroup by d.dept_noorder by d.dept_no

解题思路:将departments和dept_emp联结(左联结内联结都可以),得到员工对应的部门编号和部门名称后,再联结salaries表,通过对部门分组,得到每组工资数。

SQL23 对所有员工的薪水按照salary降序进行1-N的排名

select emp_no, salary, dense_rank() over (order by salary desc) as 't_rank'from salariesorder by salary desc, emp_no asc

解题思路:使用别名rank时必须要用单引号或双引号,否则出错。

使用窗口函数DENSE_RANK() OVER()函数即可将实现薪水按照salary进行按照1-N的排名,相同salary并列。

https://blog.csdn.net/sb_jb/article/details/124208738

SQL24 获取所有非manager员工当前的薪水情况

select de.dept_no, de.emp_no, s.salaryfrom dept_emp de,salaries swhere de.emp_no = s.emp_noand s.emp_no not in( select emp_no from dept_manager)

select de.dept_no, de.emp_no, s.salaryfrom dept_emp dejoin dept_manager dm on de.dept_no = dm.dept_nojoin salaries s on de.emp_no = s.emp_nowhere de.emp_no != dm.emp_no

SQL25 获取员工其当前的薪水比其manager当前薪水还高的相关信息

select emp.emp_no, manager.emp_no, emp.salary, manager.salary from (select de.dept_no as dept_no, de.emp_no as emp_no, s.salary as salary from dept_emp de join salaries s on de.emp_no = s.emp_no ) as emp join (select dm.dept_no as dept_no, dm.emp_no as emp_no, s.salary as salary from dept_manager dm join salaries s on dm.emp_no = s.emp_no) as manager on emp.dept_no=manager.dept_no where emp.emp_no<>manager.emp_no and emp.salary > manager.salary

解题思路:分别选出员工表和管理者表,然后通过部门号结合,按照员工表中的工资高于管理者表中的工资进行筛选,得出结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容