Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Oracle_запрос Выбор подразделения (поиск максимума)

49K
18 мая 2011 года
zargandr
15 / / 22.04.2011
Здравствуйте) Возникла проблема с запросом, не представляю как его делать, поэтому пришлось обратится за помощью.
Цель запроса: выбор подразделения с наибольшим количеством работающих сотрудников. Есть две таблицы одна таблица "сотрудники" она привязана связью "многие ко одному" к таблице "подразделение".
Проблемы которые возникли у меня:
1)как подсчитать количество сотрудников в каком-то одно подразделении ;
2как подсчитать из этих выбранных значений максимум + так чтобы было выведено название подразделения;

Заранее спасибо)
52K
19 мая 2011 года
Sabit
42 / / 29.10.2010
1 Запрос:
 
Код:
SELECT Count(a.lastname) FROM Persons a, Department b
WHERE (a.DepartID=b.ID) AND (b.DepartName = 'Управление')


здесь,
Persons - название таблицы сотрудников
Department - название таблицы предприятии

DepartID - название ключевого поля в таблице Persons который связывает с таблицой Department
ID - название поля в таблице Department
DepartName - название поля с наименованием предприятия
lastname - название поля в таблице сотрудники (можно подставить любое)
'Управление' - параметр запроса, подставите нужное Вам наименование предприятия
52K
19 мая 2011 года
Sabit
42 / / 29.10.2010
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

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

здесь,
Persons - название таблицы сотрудников
Department - название таблицы предприятии

DepartID - название ключевого поля в таблице Persons который связывает с таблицой Department
ID - название поля в таблице Department
DepartName - название поля с наименованием предприятия
lastname - название поля в таблице сотрудники (можно подставить любое)
PersCount - название поля с количеством сотрудников
49K
19 мая 2011 года
zargandr
15 / / 22.04.2011
Спасибо за помощь, но тем не менее главная проблема для меня как раз заключалась в том, чтобы во втором запросе выбрать только первую строку(требуется показать только одно подразделение с максимальным количеством), как это можно сделать?
8.2K
19 мая 2011 года
Ora-cool
211 / / 20.09.2007
Цитата: zargandr
Спасибо за помощь, но тем не менее главная проблема для меня как раз заключалась в том, чтобы во втором запросе выбрать только первую строку(требуется показать только одно подразделение с максимальным количеством), как это можно сделать?



select * from (2 Запрос) where rownum <= 1;

277
19 мая 2011 года
arrjj
1.7K / / 26.01.2011
Цитата: 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


Добавить where в конец

8.2K
19 мая 2011 года
Ora-cool
211 / / 20.09.2007
Цитата: arrjj
Добавить where в конец


Это неправильно. Сначала отберется 1-я запись, а потом выполнится сортировка. Нужен внешний запрос, как я написал.

277
19 мая 2011 года
arrjj
1.7K / / 26.01.2011
У я и незнал, какой оракл хитрый :) в mysql проще limit есть:D
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог