Возможно ли решить данную задачу с помощью SQL БЕЗ использования рекурсии? Есть две сущности – отделы (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 БЕЗ использования рекурсии?

21 Авг 2019 в 06:05
163 +1
2
Ответы
1

Да, данную задачу можно решить с помощью SQL без использования рекурсии. Можно использовать следующий запрос для размещения сотрудников каждого отдела за отдельным столиком:

WITH ranked_deps AS (
SELECT id,
qty,
ROW_NUMBER() OVER (ORDER BY qty) AS rn
FROM deps
),
ranked_tables AS (
SELECT id,
qty,
ROW_NUMBER() OVER (ORDER BY qty) AS rn
FROM tables
)
SELECT d.id AS dep_id,
t.id AS table_id
FROM ranked_deps d
JOIN ranked_tables t ON d.rn = t.rn

Этот запрос будет размещать сотрудников каждого отдела за отдельным столиком с учетом количества сотрудников в отделе и количества мест за столиком.

20 Апр в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир