Wyświetlenie max z funkcji średniej

0

Cześć. Mam do napisania zapytanie do przykladowej bazy danych oracle hr. Chodzi o to by wyświetlić największe średnie wynagrodzenie w danym oddziale razem z id oddziału. Wynagrodzenie oraz id oddzialy znajdują się w jednej tabeli employees. Mam cos takiego:

 
select department_id, avgsal 
from 
(
  select department_id, avg(salary) as avgsal 
  from EMPLOYEES 
  group by department_id
) 
where avgsal=(select  max(avgsal) 
              from (select department_id, avg(salary) as avgsal 
                    from employees group by department_id));

Zapytanie działa, ale czy można to napisać w prostszy sposób?

0

chyba trochę przekombinowałeś - spróbuj po prostu z ORDER BY i TOP 1 WITH TIES ( o ile with ties działa w oracle :) = w MS SQL Server na pewno - to tak na wypadek jakbyś miał identyczne wartości avg max).

SELECT top 1 with ties department_id, avg(salary) AS avgsal 
  FROM EMPLOYEES 
  GROUP BY department_id
 ORDER BY Avgsal 

1 użytkowników online, w tym zalogowanych: 0, gości: 1