Выберите самое большое значение - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь решить простую проблему, но получаю стопку с деталями.

У меня есть 2 таблицы, у одной есть сотрудники, а у другой есть отделы. Моя проблема: я пытаюсь проверить, в каком отделе больше всего сотрудников, и вывести только этот конкретный отдел.

Пока у меня есть:

select count(*) Number_of_employees
      from department d, employee e
      where d.department_id = e.department_id
      group by department_name

который выводит:

NUMBER_OF_EMPLOYEES    
---------------------- 
2                      
4                      
3                      
3                      
3  

Моя цель состоит в том, чтобы выводить только отдел с наибольшим количеством сотрудников, то есть отдел с 4 сотрудниками.

Я пытался использовать MAX и JOIN, но я не так хорош в соединении, поэтому любые предложения будут оценены.

Ответы [ 3 ]

3 голосов
/ 15 сентября 2011

@ Жолт Ботыкай

Я думаю, что это правильно, за исключением того, что порядок должен быть DESC, и я не думаю, что вы можете ссылаться на number_of_employees внутри запроса (ты не можешь в оракуле все равно).

  select department_name 
  from
     (select department_name
            ,number_of_employees
      from  
        ( select department_name, count(*) Number_of_employees
          from department d, employee e
          where d.department_id = e.department_id
          group by department_name) 
      order by Number_of_employees DESC) 
  where rownum = 1 
3 голосов
/ 15 сентября 2011

Вы можете сделать это таким образом, чтобы избежать rownum:

select 
      max(d.department_name) keep (dense_rank first order by count(1) desc) as department_name
      , count(1) as number_of_employees
    from employee e
    inner join department d on (e.department_id = d.department_id)
    group by d.department_name
    ;
1 голос
/ 15 сентября 2011
 select department_name from 
        ( select department_name, count(*) Number_of_employees
            from department d, employee e
           where d.department_id = e.department_id
           group by department_name
           order by 2 desc ) 
  where rownum = 1 

должен сделать.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...