droptable Employee;droptable Department;CreatetableIfNotExists Employee (id int, name varchar(255), salary int, departmentId int);CreatetableIfNotExists Department (id int, name varchar(255));Truncatetable Employee;insertinto Employee (id, name, salary, departmentId)values('1','Joe','85000','1');insertinto Employee (id, name, salary, departmentId)values('2','Henry','80000','2');insertinto Employee (id, name, salary, departmentId)values('3','Sam','60000','2');insertinto Employee (id, name, salary, departmentId)values('4','Max','90000','1');insertinto Employee (id, name, salary, departmentId)values('5','Janet','69000','1');insertinto Employee (id, name, salary, departmentId)values('6','Randy','85000','1');insertinto Employee (id, name, salary, departmentId)values('7','Will','70000','1');Truncatetable Department;insertinto Department (id, name)values('1','IT');insertinto Department (id, name)values('2','Sales');
输入
输出
with t1 as(select e.id, e.name, e.salary, e.departmentId, d.name as dep_name
from Employee e, department d
where e.departmentId=d.id
),t2 as(select*,
dense_rank()over(partitionby dep_name orderby salary desc) rn1
from t1
)select dep_name as Department,name Employee,salary
from t2
where rn1<=3;