SELECT Count(a.lastname) FROM Persons a, Department b
WHERE (a.DepartID=b.ID) AND (b.DepartName = 'Управление')
Oracle_запрос Выбор подразделения (поиск максимума)
Цель запроса: выбор подразделения с наибольшим количеством работающих сотрудников. Есть две таблицы одна таблица "сотрудники" она привязана связью "многие ко одному" к таблице "подразделение".
Проблемы которые возникли у меня:
1)как подсчитать количество сотрудников в каком-то одно подразделении ;
2как подсчитать из этих выбранных значений максимум + так чтобы было выведено название подразделения;
Заранее спасибо)
Код:
здесь,
Persons - название таблицы сотрудников
Department - название таблицы предприятии
DepartID - название ключевого поля в таблице Persons который связывает с таблицой Department
ID - название поля в таблице Department
DepartName - название поля с наименованием предприятия
lastname - название поля в таблице сотрудники (можно подставить любое)
'Управление' - параметр запроса, подставите нужное Вам наименование предприятия
Код:
SELECT a.DepartName, COUNT(b.lastname) AS PersCount FROM Department a
LEFT JOIN Persons b on b.DepartID = a.ID
GROUP BY a.DepartName
ORDER BY PersCount DESC
LEFT JOIN Persons b on b.DepartID = a.ID
GROUP BY a.DepartName
ORDER BY PersCount DESC
список предприятии с количеством сотрудников упорядоченный по убыванию, т.е. название предприятия с максимальным количеством сотрудников будет на первой строке.
здесь,
Persons - название таблицы сотрудников
Department - название таблицы предприятии
DepartID - название ключевого поля в таблице Persons который связывает с таблицой Department
ID - название поля в таблице Department
DepartName - название поля с наименованием предприятия
lastname - название поля в таблице сотрудники (можно подставить любое)
PersCount - название поля с количеством сотрудников
Спасибо за помощь, но тем не менее главная проблема для меня как раз заключалась в том, чтобы во втором запросе выбрать только первую строку(требуется показать только одно подразделение с максимальным количеством), как это можно сделать?
Цитата: zargandr
Спасибо за помощь, но тем не менее главная проблема для меня как раз заключалась в том, чтобы во втором запросе выбрать только первую строку(требуется показать только одно подразделение с максимальным количеством), как это можно сделать?
select * from (2 Запрос) where rownum <= 1;
Цитата: Sabit
2 Запрос:
Код:
SELECT a.DepartName, COUNT(b.lastname) AS PersCount FROM Department a
LEFT JOIN Persons b on b.DepartID = a.ID
GROUP BY a.DepartName
ORDER BY PersCount DESC
WHERE rownum <=1
LEFT JOIN Persons b on b.DepartID = a.ID
GROUP BY a.DepartName
ORDER BY PersCount DESC
WHERE rownum <=1
Добавить where в конец
Цитата: arrjj
Добавить where в конец
Это неправильно. Сначала отберется 1-я запись, а потом выполнится сортировка. Нужен внешний запрос, как я написал.
У я и незнал, какой оракл хитрый :) в mysql проще limit есть:D