Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 00:08   #1
zargandr1
Пользователь
 
Регистрация: 14.02.2011
Сообщений: 12
По умолчанию Oracle_запрос Выбор подразделения (поиск максимума)

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

Заранее спасибо)
zargandr1 вне форума Ответить с цитированием
Старый 19.05.2011, 09:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
привязана связью "многие ко одному" к таблице "подразделение".
это означает, что в таблице Сотрудники есть поле ПодразделениеID - внешний ключ, ссылающийся на таблицу Подразделение

Цитата:
1)как подсчитать количество сотрудников в каком-то одно подразделении ;
Код:
SELECT COUNT(*) As "Количество" 
FROM Сотрудники
WHERE ПодразделениеID = КодНужногоПодразделения
или
Код:
SELECT COUNT(*) As "Количество" 
FROM Сотрудники SOTR, Подразделение PDR
WHERE SOTR.ПодразделениеID =  PDR.ПодразделениеID
AND PDR.Подразделение = 'Бухгалтерия'

Цитата:
2как подсчитать из этих выбранных значений максимум + так чтобы было выведено название подразделения;
можно написать различные варианты...
например, можно так попробовать:
Код:
SELECT * FROM Подразделение PDR,
   (SELECT TOP 1 ST.ПодразделениеID, count(*) as Cnt
       FROM Сотрудники ST
     GROUP BY ST.ПодразделениеID
     ORDER BY 2 desc ) STMAX
WHERE PDR.ПодразделениеID = STMAX.ПодразделениеID
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2011, 09:58   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

чота мне кажется что в оракле нет никаких топ

я бы в оракле делал такой запрос (подразделение сам подтянешь в запрос)
Код:
with 
  t as (select
          e.emp_id,
          count(1) cnt
        from employee e
        group by e.emp_id)

select *
from t
where cnt = (select max(cnt) from t)
все-таки подразделений с максимальным числом сотрудников может быть несколько и это надо учитывать
soleil@mmc вне форума Ответить с цитированием
Старый 20.05.2011, 10:04   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
чота мне кажется что в оракле нет никаких топ
угу. замылил глаз, не обратил внимание, что в топике нужно именно для Oracle

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

но, думаю, что TC уже с этим вполне может самостоятельно справиться...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.05.2011, 16:44   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
но, думаю, что TC уже с этим вполне может самостоятельно справиться...
ну там перед примером запроса как раз это и написано
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск минимума и максимума в двумерных массивах qbasic Bentli Помощь студентам 3 19.06.2010 20:00
Поиск минимума/максимума в массиве gwarthy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.01.2010 22:27
Поиск максимума sp_Иришка Общие вопросы C/C++ 9 17.12.2009 15:18
поиск второго максимума Arcueid1691 Общие вопросы C/C++ 7 15.10.2009 22:43
Поиск Максимума в двумерном массиве NSvirus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 20.09.2009 18:04