Форум программистов, компьютерный форум, киберфорум
Наши страницы
Oracle
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
1

Запрос: вывести фамилии и номера отделов с максимальным числом людей в отделе

02.05.2012, 15:16. Просмотров 749. Ответов 8
Метки нет (Все метки)

есть 2 таблицы emp(id, last_name,first_name,dept_id) и dept(id,name,region_id) связь между таблицами dept_id - id. вывести фамилии и номера отделов с максимальным числом людей в отделе.
чет пишу ни чего не получается, помогите пожалуйста.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT e.last_name, d.REGION_ID
FROM emp e, dept d
WHERE e.dept_id IN
(
  SELECT id
  FROM dept
  WHERE region_id IN
  (
    SELECT region_id
    FROM dept
    HAVING MAX(COUNT(id))
  )
  GROUP BY id
)
AND d.ID=e.DEPT_ID
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2012, 15:16
Ответы с готовыми решениями:

Вывести товар и общую сумму реализации в отделе
Собственно сама задача поставлена в имени темы, вывести все товары из отдела...

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

Подразделение с максимальным числом сотрудников
Мне надо вывести самое популярное подразделение из табл. Hr. Departments ....

Выбрать строки из максимальным числом
После выполнения этого запроса сформировался набор из которого нужно выбрать...

Вывести фамилии людей, живущих в разных городах по одинаковым адресам или сообщить, что таких людей нет
Задача:В файле содержаться адреса n человек. Вывести фамилии людей, живущих в...

8
Grossmeister
Модератор
3394 / 2451 / 414
Регистрация: 21.01.2011
Сообщений: 10,748
02.05.2012, 15:45 2
А причем тут region_id? Насколько мне помнится, это вообще ссылка на другую таблицу.

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT E.last_name, E.first_name, D.name
FROM emp E,
        dept D
WHERE D.id = E.dept_id
   AND E.dept_id IN 
     (SELECT dept_id
       FROM 
       (SELECT dept_id, COUNT(id) AS Cnt
         FROM emp
         GROUP BY dept_id
         ORDER BY Cnt DESC  
       )
       WHERE ROWNUM <= 1
     )
0
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 15:55  [ТС] 3
Цитата Сообщение от Grossmeister Посмотреть сообщение
А причем тут region_id? Насколько мне помнится, это вообще ссылка на другую таблицу.

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT E.last_name, E.first_name, D.name
FROM emp E,
        dept D
WHERE D.id = E.dept_id
   AND E.dept_id IN 
     (SELECT dept_id
       FROM 
       (SELECT dept_id, COUNT(id) AS Cnt
         FROM emp
         GROUP BY dept_id
         ORDER BY Cnt DESC  
       )
       WHERE ROWNUM <= 1
     )
а может быть несколько отделов в которых максимально число рабочих как это реализовать?
0
Grossmeister
Модератор
3394 / 2451 / 414
Регистрация: 21.01.2011
Сообщений: 10,748
02.05.2012, 15:58 4
Этот запрос будет работать, если несколько отделов содержат одинаковое макс. число работников
0
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 16:00  [ТС] 5
Цитата Сообщение от Grossmeister Посмотреть сообщение
Этот запрос будет работать, если несколько отделов содержат одинаковое макс. число работников
нет не работает.. только если менять цифру 1 на какуюнибудь
0
Grossmeister
Модератор
3394 / 2451 / 414
Регистрация: 21.01.2011
Сообщений: 10,748
02.05.2012, 16:06 6
Что значит не работает? В чем это выражается?
0
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 16:12  [ТС] 7
Цитата Сообщение от Grossmeister Посмотреть сообщение
Что значит не работает? В чем это выражается?
у меня в 3 отделах по 4 человека он показывает только тот отдел что идет первым а дальше все WHERE ROWNUM <= 1, если поставить WHERE ROWNUM <= 3 тогда выведет все максимальные
0
Grossmeister
Модератор
3394 / 2451 / 414
Регистрация: 21.01.2011
Сообщений: 10,748
02.05.2012, 16:22 8
ОК, понял.
Тогда можно такой подзапрос
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AND E.dept_id IN
    (SELECT dept_id
     FROM 
         (SELECT dept_id, COUNT(id) AS Cnt
          FROM emp
          GROUP BY dept_id
         ) C,
 
         (SELECT MAX(COUNT(id)) AS Cnt
          FROM emp
          GROUP BY dept_id
         ) M
 
     WHERE C.cnt = M.cnt
    )
1
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 16:26  [ТС] 9
Цитата Сообщение от Grossmeister Посмотреть сообщение
ОК, понял.
Тогда можно такой подзапрос
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AND E.dept_id IN
    (SELECT dept_id
     FROM 
         (SELECT dept_id, COUNT(id) AS Cnt
          FROM emp
          GROUP BY dept_id
         ) C,
 
         (SELECT MAX(COUNT(id)) AS Cnt
          FROM emp
          GROUP BY dept_id
         ) M
 
     WHERE C.cnt = M.cnt
    )
спасибо огромное!! все работает, я наверное поднадоел малость...
0
02.05.2012, 16:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2012, 16:26

Выведите список всех отделов и количество сотрудников в каждом отделе
Приветствую всех. Возникли сложности в создании данных запросов.. Нужна помощь!...

Вывести на экран данные фамилии и имена всех людей, у которых фамилии начинаются с 2 буквы, как и ваша фамилия
Необходимо ввести в файл фамилии, имени 6 человек. Вывести на экран данные...

Вывести фамилии людей получивших заданную оценку
Помогите вот еще, У меня тут задачка типа: Сделать програму какая находит и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru