sql oracle schemat hr zagnieżdżone zapytanie

Odpowiedz Nowy wątek
2018-11-28 19:56
0

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

Pozostało 580 znaków

2018-11-29 07:44
0

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
edytowany 1x, ostatnio: BlackBad, 2018-11-29 07:47
ORA-00934: group function is not allowed here 00934. 00000 - "group function is not allowed here" Cause: Action: Error at Line: 13 Column: 19 - olejniczakbydgoszcz 2018-11-29 17:06

Pozostało 580 znaków

2018-11-29 08:19
0

dzięki za poświęcony! tak się zastanawiam czy można to zrobić szybciej analitycznymi funkcjami oracle

Pozostało 580 znaków

2018-11-29 13:15
Czarny Rycerz
0

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;

Pozostało 580 znaków

2018-11-29 17:05
0
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

Pozostało 580 znaków

2018-12-03 12:05
0

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
;

Pozostało 580 znaków

2018-12-03 20:06
0

ORA-00904: : invalid identifier

  1. 00000 - "%s: invalid identifier"
    Cause:
    Action:
    Error at Line: 2 Column: 3
Brakuje słówka kluczowego AS, WITH baza, a powinno być: WITH baza AS - yarel 2018-12-03 21:14
oraz department_id zamiast departament_id - olejniczakbydgoszcz 2018-12-03 21:18
no tak, rzczywiście nie dopisałem AS i literówka w department_id, ale generalnie to jest już kosmetyka ;) - ovadiah 2018-12-04 10:55

Pozostało 580 znaków

2018-12-03 21:17

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
;

Pozostało 580 znaków

2018-12-03 22:21
0

Schemat bazy danych

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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