присоединиться к запросу в SQL - PullRequest
0 голосов
/ 18 мая 2019

Вот мой SQL-запрос и результат. Мое требование - отображать имя отдела с максимальным количеством сотрудников, но я не знаю, как это сделать. Я хочу получить результат, например, имя_департамента - SE и количество сотрудников - только 4.

    select d.department_name, count(staff_id) from department d, staff sf 
    where d.department_id = sf.staff_id
    group by department_name
    order by count(staff_id) desc
    DEPARTMENT_NAME                COUNT(SF.STAFF_ID)                               
    ------------------------------ ------------------                               
    SE                             4                               
    EEE                            2                               
    IT                             2                               
    CSE                            2                               
    ECE                            1    

Ответы [ 3 ]

0 голосов
/ 18 мая 2019

Вы должны использовать LIMIT 1 для уменьшения результата, но также использовать явный синтаксис объединения для лучшей читабельности

select d.department_name, count(staff_id) 
from department d
INNER JOIN staff sf  ON  d.department_id = sf.staff_id
group by department_name
order by count(staff_id) desc
limit 1 

Или без использования лимита вы можете попытаться установить максимальное значение

  select d.department_name, count(staff_id)  count_staff
  from department d
  INNER JOIN staff sf  ON  d.department_id = sf.staff_id
  group by department_name
  having count_staff = (
      select max(count_staff) 
      from ( select d.department_name, count(staff_id) count_staff
              from department d
               INNER JOIN staff sf  ON  d.department_id = sf.staff_id
                group by department_name ) t
  )
0 голосов
/ 18 мая 2019

Сначала необходимо получить счет каждого отдела, а затем выбрать отдел с максимальным количеством. Поэтому вы можете использовать подзапрос следующим образом:

SELECT d_name, MAX (staff_cnt) 
FROM (SELECT d.department_name as d_name, count(staff_id) as staff_cnt 
      FROM department d, staff sf 
      WHERE d.department_id = sf.staff_id
      GROUP BY department_name);
0 голосов
/ 18 мая 2019

Попробуйте это

запрос псевдонима

select d.department_name, count(staff_id)
from department d, staff sf 
where d.department_id = sf.staff_id AND d.department_name = 'SE'
group by department_name 
order by count(staff_id) desc

JOIN Query

select d.department_name, count(staff_id)
from department d 
INNER JOIN staff sf ON d.department_id = sf.staff_id
WHERE d.department_name = 'SE'
group by department_name 
order by count(staff_id) desc 
LIMIT 1

ИЛИ Top

select TOP 1 d.department_name, count(staff_id)
from department d 
INNER JOIN staff sf ON d.department_id = sf.staff_id
group by department_name 
order by count(staff_id) desc 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...