Напишите запрос, чтобы отобразить название факультета с максимальным количеством студентов - PullRequest
0 голосов
/ 17 апреля 2019

это схема Напишите запрос, чтобы отобразить название факультета с максимальным количеством студентов.

это то, что пытались.

select d.department_name,count(s.student_id)
     from department d left join student s
     on d.department_id=s.department_id 
     group by d.department_name,d.department_id
     order by d.department_name;

и я думаю, что в моем коде чего-то не хватает

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Исходя из упомянутой схемы, вам нужно будет соединить (INNER JOIN) таблицу отделов из таблицы персонала, чтобы получить название отдела.

Если название отдела нежелаемое, и количество может быть просто основано на Department_id, тогда объединение не требуется.

Запросы для обоих сценариев упомянуты ниже.

Запрос Oracle SQL для результата сназвание отдела, т. е. с INNER JOIN

SELECT D.DEPARTMENT_NAME, COUNT(S.DEPARTMENT_ID) AS STAFF_COUNT FROM **DEPARTMENT D, STAFF S** --INDICATES INNER JOIN IN ORACLE SQL
WHERE D.DEPARTMENT_ID = S.DEPARTMENT_ID
GROUP BY D.DEPARTMENT_NAME
ORDER BY STAFF_COUNT DESC

Oracle SQL-запрос для результата без названия отдела, просто идентификатор отдела

SELECT S.DEPARTMENT_ID,COUNT(S.DEPARTMENT_ID) AS STAFF_COUNT FROM STAFF S
GROUP BY S.DEPARTMENT_ID
ORDER BY STAFF_COUNT DESC

Надеюсь, что этопомогает.Приветствия.

0 голосов
/ 17 апреля 2019

Ты почти у цели.
Упорядочить результат в порядке убывания числа студентов, а затем взять первый ряд:

SELECT department_name
FROM
(
  SELECT   d.department_name,
           COUNT(*) AS nr_students
  FROM     department d
  JOIN     student    s
    ON     d.department_id = s.department_id
  GROUP BY d.department_name
  ORDER BY nr_students DESC
)
WHERE ROWNUM <= 1;
...