欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【MySQL牛客】12.获取所有部门中当前员工当前薪水最高的相关信息

程序员文章站 2022-07-23 12:10:15
问题描述获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工当前(salaries.to_date=‘9999-01-01’)薪水最高的相关信息,给出dept_no, emp_no以及其对应的salaryCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,P...

问题描述

获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工当前(salaries.to_date=‘9999-01-01’)薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary

CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

这题太坑了,看需求都没看明白,当然也可能是因为我太菜了。
题意:
获取每个部门中员工薪水最高的员工的信息。
第一,每个部门,所以要分组。
第二,3个字段来自2个表,所以要联结。
第三,都是当前,这是on的条件之一。
第四,联结表需要emp_no相等,这是on的条件之二。
第五,取最大的薪水,要用max。
第六,这题有坑,只写能通过牛客的代码。真正正确的代码要review一下。

select de.dept_no, de.emp_no, max(salary)
from dept_emp de inner join salaries sa
on de.to_date='9999-01-01' and sa.to_date='9999-01-01'
and de.emp_no=sa.emp_no
group by de.dept_no;

本文地址:https://blog.csdn.net/weixin_41687289/article/details/107674478

相关标签: MySQL练习