2010-05-24 4 views
-1

Comment faire pour lister les départements de la table EMP d'Oracle qui ont deux greffiers ou trois gestionnaires?aide avec la requête

+0

Vous ne réussirez jamais à obtenir une réponse quand vous posez une question comme ça. Est-ce votre première fois en ligne? http://stackoverflow.com/faq – calumbrodie

+0

@calumbrodie - à quel point vous avez tort – APC

+0

@APC en effet! vous devez admettre - les questions est un peu clairsemée et l'obligent 's'il vous plaît aider! à la fin ne leur fait pas de faveurs .. – calumbrodie

Répondre

7

Il existe plusieurs façons d'obtenir ce résultat. Voici une solution:

SQL> select deptno 
    2   , mgr_count 
    3   , clerk_count 
    4 from 
    5  (select deptno 
    6     , sum (case when job = 'MANAGER' then 1 else 0 end) as mgr_count 
    7     , sum (case when job = 'CLERK' then 1 else 0 end) as clerk_count 
    8   from emp 
    9   group by deptno) 
10 where mgr_count > 3 
11 or clerk_count > 2 
12/

    DEPTNO MGR_COUNT CLERK_COUNT 
---------- ---------- ----------- 
     30   3   5 
     50   4   0 

SQL> 

Voici une approche légèrement différente:

SQL> select * from 
    2  (select deptno 
    3   , job 
    4   , count(*) as cnt 
    5  from emp 
    6  group by deptno, job 
    7  ) 
    8 where (job = 'MANAGER' and cnt >= 3) 
    9 or (job = 'CLERK' and cnt >= 2) 
10/

    DEPTNO JOB    CNT 
---------- --------- ---------- 
     20 CLERK    2 
     30 CLERK    5 
     30 MANAGER   3 
     50 MANAGER   4 

SQL> 
+0

Merci beaucoup ... – luchipong

+0

+1 pour avoir la patience de ré-éditer et de répondre à cette question – nickf