方法一: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