powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача о размещении
3 сообщений из 3, страница 1 из 1
Задача о размещении
    #39651277
artemiuss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две сущности – отделы (deps) и столики (столики). В рамках корпоратива необходимо разместить сотрудников каждого из отделов за отдельным столиком. Сотрудники каждого отдела могут должны быть размещены не более чем за одним столиком. И наоборот: за одним столиком могут сидеть только сотрудники одного отдела.
id – идентификатор отдела или столика. qty – количество сотрудников отдела или количество мест за столиком.
Пример данных:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
drop table deps;
drop table tables;
create table deps (id number, qty number);
create table tables (id number, qty number);
insert into deps values (1,100);
insert into deps values (2,50);
insert into deps values (3,40);
insert into deps values (4,10);
insert into tables values (101,100);
insert into tables values (102,100);
insert into tables values (103,40);
insert into tables values (104,10);


Подскажите плз, возможно ли решить данную задачу с помощью SQL БЕЗ использования рекурсии?
...
Рейтинг: 0 / 0
Задача о размещении
    #39651384
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artemiuss,

Ну я даже не знаю ... т.е. я не понял вопрос. Т.е. я не вижу вопрос в задаче, но могу предложить решение например такое:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
with deps (id , qty) as 
(select 1,100 from dual union all
 select 2,50 from dual union all
 select 3,40 from dual union all
 select 4,10 from dual
),
tables (t_id, t_qty) as 
(select 101,100 from dual union all
 select 102,100 from dual union all
 select 103,40 from dual union all
 select 104,10 from dual
)
select d.id, t.t_id, 
case when d.qty <= t.t_qty then 'ok'
                           else 'no'
end fit_for
from 
(select id, qty, row_number() over (order by qty desc) drn from deps) d
left join
(select t_id, t_qty, row_number() over (order by t_qty desc) trn from tables) t on ( d.drn = t.trn)


т.е. Если будут все fit_for = ok - то можно разместить. Если будет вопрос оптимально-ли разместят? - нет не оптимально
...
Рейтинг: 0 / 0
Задача о размещении
    #39651390
artemiuss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,

Да, все верно, спасибо. Это задачка с интервью. Фишка, как раз в отсутствии требования размещать оптимально. А я ,как нормальный человек, пытался решать ее по умолчанию с учетом такого требования. Теперь только допер, что задачка эта была на внимательность чтения условия в том числе .
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача о размещении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]