Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
1

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

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

Author24 — интернет-сервис помощи студентам
есть 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2012, 15:16
Ответы с готовыми решениями:

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

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

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

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

8
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
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
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
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
02.05.2012, 15:58 4
Этот запрос будет работать, если несколько отделов содержат одинаковое макс. число работников
0
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 16:00  [ТС] 5
Цитата Сообщение от Grossmeister Посмотреть сообщение
Этот запрос будет работать, если несколько отделов содержат одинаковое макс. число работников
нет не работает.. только если менять цифру 1 на какуюнибудь
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
02.05.2012, 16:06 6
Что значит не работает? В чем это выражается?
0
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
02.05.2012, 16:12  [ТС] 7
Цитата Сообщение от Grossmeister Посмотреть сообщение
Что значит не работает? В чем это выражается?
у меня в 3 отделах по 4 человека он показывает только тот отдел что идет первым а дальше все WHERE ROWNUM <= 1, если поставить WHERE ROWNUM <= 3 тогда выведет все максимальные
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2012, 16:26
Помогаю со студенческими работами здесь

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

Структура: Вывести фамилии людей, живущих в разных городах по одинаковым адресам
Добрый день! Есть задачка: Даны адреса n человек ( n = const). Вывести фамилии людей, живущих в...

При вводе запроса фамилии вывести из очереди людей, с одинаковой фамилией
Организовать очередь , содержащую соответственно имя фамилию и отчество людей. При вводе запроса...

Удалить строку с максимальным числом отрицательных элементов и столбец с максимальным числом положительных элементов
В массиве X удалить строку с максимальным числом отрицательных элементов и столбец с максимальным...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru