Mysql - 获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary

 

注意值分别求得所有部门的最高薪资,在结果中用having 进行过滤 

select a.dept_no, a.emp_no, b.salary 
 from dept_emp a, salaries b 
 where a.emp_no = b.emp_no and a.to_date = '9999-01-01' and b.to_date = '9999-01-01'
 group by a.dept_no 
 having max(b.salary);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(1) 查询每个部门(departments)的编号(dept_no),名称(dept_name),在该部门工作过的雇员(employees)人数,最低工资(salary),平均工资,最高工资及工资总额; ``` SELECT d.dept_no, d.dept_name, COUNT(e.emp_no) AS num_of_employees, MIN(s.salary) AS min_salary, AVG(s.salary) AS avg_salary, MAX(s.salary) AS max_salary, SUM(s.salary) AS total_salary FROM departments d LEFT JOIN dept_emp de ON d.dept_no = de.dept_no LEFT JOIN employees e ON de.emp_no = e.emp_no LEFT JOIN salaries s ON e.emp_no = s.emp_no GROUP BY d.dept_no, d.dept_name; ``` (2) 查询每个部门(departments)的编号(dept_no),名称(dept_name),及各个时间段(from_date,to_date)担任该部门经理(dept_manager)的雇员的编号(emp_no)和姓名(first_name+last_name),并按时间段先后显式; ``` SELECT d.dept_no, d.dept_name, dm.from_date, dm.to_date, e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS emp_name FROM departments d LEFT JOIN dept_manager dm ON d.dept_no = dm.dept_no LEFT JOIN employees e ON dm.emp_no = e.emp_no ORDER BY dm.from_date ASC; ``` (3) 查询每位雇员的编号(emp_no),姓名(first_name+last_name),及各个时间段(from_date,end_data)的工资额(salary),并按时间段先后显式; ``` SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS emp_name, s.from_date, s.to_date, s.salary FROM employees e LEFT JOIN salaries s ON e.emp_no = s.emp_no ORDER BY s.from_date ASC; ``` (4) 查询每位雇员的编号(emp_no),姓名(first_name+last_name),及各个时间段(from_date,end_data)的工作部门名称(dept_name),并按时间段先后显式; ``` SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS emp_name, dp.from_date, dp.to_date, d.dept_name FROM employees e LEFT JOIN dept_emp dp ON e.emp_no = dp.emp_no LEFT JOIN departments d ON dp.dept_no = d.dept_no ORDER BY dp.from_date ASC; ``` (5) 查询每位雇员的编号(emp_no),姓名(first_name+last_name),及任职过的部门数; ``` SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS emp_name, COUNT(DISTINCT dp.dept_no) AS num_of_departments FROM employees e LEFT JOIN dept_emp dp ON e.emp_no = dp.emp_no GROUP BY e.emp_no, emp_name; ``` (6) 查询每位雇员的编号(emp_no),姓名(first_name+last_name),及各个时间段(from_date,end_data)担任的职务(title),并按时间段先后显式; ``` SELECT e.emp_no, CONCAT(e.first_name, ' ', e.last_name) AS emp_name, tt.from_date, tt.to_date, t.title FROM employees e LEFT JOIN titles t ON e.emp_no = t.emp_no LEFT JOIN titles tt ON t.emp_no = tt.emp_no AND tt.from_date < t.from_date GROUP BY e.emp_no, tt.from_date, tt.to_date, t.title ORDER BY tt.from_date ASC; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值