Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。
|----|-------|--------|--------------|
Id
Name
Salary
DepartmentId
1
Joe
70000
1
2
Henry
80000
2
3
Sam
60000
2
4
Max
90000
1
----
-------
--------
--------------
Department 表包含公司所有部门的信息。
|----|----------|
Id
Name
1
IT
2
Sales
----
----------
编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。
|------------|----------|--------|
Department
Employee
Salary
IT
Max
90000
Sales
Henry
80000
------------
----------
--------
1 2 3 4 5
--使用oracle分析函数rank()over()进行排序 select B.name Department ,A.name Employee ,A.Salary from (select Salary,Name,DepartmentId ,rank()OVER(PARTITIONBY DepartmentId ORDERBY Salary desc) numfrom Employee ) A join Department B on A.DepartmentId=B.ID where A.num=1