У меня есть функция, которая получает название отдела и операцию агрегирования (среднее, максимальное, минимальное) и применяет операцию к зарплате сотрудников, работающих в данном отделе, и возвращает результат
create or replace
function salaryData (p_depname varchar2, p_aggr_op varchar2)
return number
is
v_aggrr_op varchar2(20);
v_sal_max number;
v_sal_min number;
v_sal_avg number;
begin
select max(e.salary), min(e.salary), avg(e.salary)
into v_sal_max, v_sal_min, v_sal_avg
from employee e join department d
on e.deptno=d.deptno
where d.deptname=p_depname;
if p_aggr_op in ('max','MAX') then
return v_sal_max;
end if;
if p_aggr_op in ('min','MIN') then
return v_sal_min;
end if;
if p_aggr_op in ('avg','AVG') then
return v_sal_avg;
end if;
end salaryData;
/
когда я использую вызов функции
select salaryData('FINANCE','max') as max_sal from employee;
я получил вывод как:
max_sal|
-------|
20000 |
20000 |
20000 |
20000 |
20000 |
-------
как я могу показать, что это максимальная зарплата employeeid, employeeename, работающего на имя отдела