Proszę o małą podpowiedź jak wydobyć z tego jeszcze id_departamentu
```select max(a.ilosc)
from
(SELECT
department_id, count(*) ilosc
FROM
employees
group by department_id
order by 1)a
Proszę o małą podpowiedź jak wydobyć z tego jeszcze id_departamentu
```select max(a.ilosc)
from
(SELECT
department_id, count(*) ilosc
FROM
employees
group by department_id
order by 1)a
WITH cil
AS (SELECT department_id,
Count(*) ilosc
FROM employees
GROUP BY department_id
ORDER BY 1)
SELECT Max(cil.ilosc),
dep.department
FROM cil
INNER JOIN cil dep
ON Max(cil.ilosc) = dep.ilosc
GROUP BY dep.Department
dzięki za poświęcony! tak się zastanawiam czy można to zrobić szybciej analitycznymi funkcjami oracle
Nie robiłbym tego na funkcjach analitycznych, lepszy efekt da poniższe zapytanie:
select * from (
select department_id, count(1) ilosc
from employees
group by department_id
order by 2 desc nulls last
)
where rownum = 1;
Czarny Rycerz napisał(a):
Nie robiłbym tego na funkcjach analitycznych, lepszy efekt da poniższe zapytanie:
select * from ( select department_id, count(1) ilosc from employees group by department_id order by 2 desc nulls last ) where rownum = 1;
opisana propozycja nie sprawdzi się w sytuacji gdzie bedzie kilka departamentów o max ilosci pracowników
W takim razie z funkcją analityczną:
with baza (
SELECT a.*, dense_rank() over (order by ilosc desc nulls last) lp
FROM (
SELECT department_id, COUNT(1) ilosc FROM employees GROUP BY department_id
) a
)
select departament_id, ilosc from baza where lp = 1
;
ORA-00904: : invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 2 Column: 3
ostateczna wersja
WITH baza as (
SELECT a.*, dense_rank() OVER (ORDER BY ilosc DESC NULLS LAST) lp
FROM (
SELECT department_id, COUNT(1) ilosc FROM employees GROUP BY department_id
) a
)
SELECT department_id, ilosc FROM baza WHERE lp = 1
;