Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Задача о размещении  [new]
artemiuss
Member

Откуда:
Сообщений: 122
Есть две сущности – отделы (deps) и столики (столики). В рамках корпоратива необходимо разместить сотрудников каждого из отделов за отдельным столиком. Сотрудники каждого отдела могут должны быть размещены не более чем за одним столиком. И наоборот: за одним столиком могут сидеть только сотрудники одного отдела.
id – идентификатор отдела или столика. qty – количество сотрудников отдела или количество мест за столиком.
Пример данных:
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 БЕЗ использования рекурсии?
28 май 18, 17:56    [21447978]     Ответить | Цитировать Сообщить модератору
 Re: Задача о размещении  [new]
MaximaXXL
Member

Откуда: Киев
Сообщений: 652
artemiuss,

Ну я даже не знаю ... т.е. я не понял вопрос. Т.е. я не вижу вопрос в задаче, но могу предложить решение например такое:
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 - то можно разместить. Если будет вопрос оптимально-ли разместят? - нет не оптимально
28 май 18, 22:49    [21448487]     Ответить | Цитировать Сообщить модератору
 Re: Задача о размещении  [new]
artemiuss
Member

Откуда:
Сообщений: 122
MaximaXXL,

Да, все верно, спасибо. Это задачка с интервью. Фишка, как раз в отсутствии требования размещать оптимально. А я ,как нормальный человек, пытался решать ее по умолчанию с учетом такого требования. Теперь только допер, что задачка эта была на внимательность чтения условия в том числе .
28 май 18, 23:14    [21448541]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить