方法一:round()函数需要写在外层,直接用round(avg(salary) over(partition by department),3),运行结果不对,会多出一行none值。

with base_tb as(
select sta.department,(normal_salary-dock_salary) as salary
from staff_tb sta  inner join salary_tb sal on sta.staff_id = sal.staff_id
where normal_salary-dock_salary>=4000 and normal_salary-dock_salary<=30000
)

select department,round(avg_salary,3) as avg_salary from 
(select distinct department,avg(salary) over(partition by department) as avg_salary
from base_tb
order by avg_salary desc) t1