powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
15 сообщений из 15, страница 1 из 1
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402782
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
оракла под рукой нету. Но постараюсь понятно изложить проблему.
Что-то ум за разум зашел. не могу придумать красивое решение. Что-то туплю.
Итак. есть две таблицы. в каждой есть поле сумма. есть набор полей, по которым эти таблицы можно связать отношением много ко многим. Для упрощения будем считать, что условий связки нету, просто декартово произведение двух таблиц.
Нужно получить результирующую таблицу - декартово произведение, с полем сумма, чтоб выполнялись следующие условия. к каждой строке первой таблицы можно привязать строки второй на сумму не более, чем указано в ее поле сумма. то есть эта строчка рамножится в результирующей таблице на сумму не бОльшую, чем в ней указано. Аналогично со второй таблицей и ее суммами.
суммы можно дробить.
Если по простому представить алгоритм, всякий раз когда инсертим строчку связки в результирующую таблицу - уменьшаем остаток суммы в исходных строчках. забрать из строчки больше чем в ней осталось - нельзя.
можно сказать так - раздать Эн мужикам зарплату из М мешков с деньгами.
заранее спасибо.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402811
Скучающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На livesql.oracle.com дают всем желающим запускать запросы и создавать таблички. Требуется аккаунт, но это бесплатно.

Сама описанная задача требует динамического программирования и, думаю, в SQL решения не имеет
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402838
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrможно сказать так - раздать Эн мужикам зарплату из М мешков с деньгами.Эта задача решается элементарно: кассирша Маня берет очередной мешок и выдаёт очередному мужику не больше, чем ему положено по ведомости. Когда мешок заканчивается берёт из следующего.
В результате из первого мешка получают Юра, Гоша и Жора, а Жора, в свою очередь получает из первого и второго мешков. - Все довольные мужики не донесли зарплату до жён и детей.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402852
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
спасибо большое.
вот бы все то же самое, но sql запросом
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402856
bhrспасибо большое.
вот бы все то же самое, но sql запросомС какого перепугу ты решил, что кто-то будет тратить свое время, чтоб сделать эту рутину для тебя овоща?
Ты хотя бы продемонстрировал свои потуги и изобразил решение на PL/SQL.
Если и на это не способен, учитывая что алгоритм давно реализован и легко гуглится, то программирование не для тебя.
Такое отродье как ты - это пятно на айти сообщество.
Пшёл вон!
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402861
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
Препо-ДавательТакое отродье как ты - это пятно на айти сообщество.
Пшёл вон!
это все ужасно. Дяденька. проходи мимо.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402883
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrвот бы все то же самое, но sql запросомТы глаза-то разуй.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402890
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
Elicbhrвот бы все то же самое, но sql запросомТы глаза-то разуй.
пока вижу только алгоритм с использованием цикла. как дяденька выше писал - pl-sql
его изначально видел. sql запросом было сделано при связи один ко многим. для много ко многим - затык.
но за совет - спасибо. разую обязательно.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402891
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrпока вижу ... разую обязательно.Не затягивай.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402897
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
Elicbhrпока вижу ... разую обязательно.Не затягивай.
сорри. не заметил вложение.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402902
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
спасибо. основную идею понял.
решение ForStats показалось более читаемым.
Беру на вооружение.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402915
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
выложу сюда его решение для тех,кому интересно. и самому, чтоб не искать в дальнейшем
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
WITH
/* Подытоги для list_value */
parameter
AS (SELECT sq.*,
           Lag(sq.p_subtotal_value, 1, 0)
             over (
               ORDER BY sq.serial_par ) p_previous_subtotal_value
    FROM   (SELECT lv.serial_par,
                   lv.parameter_value,
                   SUM (lv.parameter_value)
                     over (
                       ORDER BY lv.serial_par ROWS unbounded preceding )
                   p_subtotal_value
            FROM   list_values lv) sq
    ORDER  BY sq.serial_par),
     /* Подытоги для list_total */
     total
     AS (SELECT sq.*,
                Lag(sq.t_subtotal_value, 1, 0)
                  over (
                    ORDER BY sq.serial_tot ) t_previous_subtotal_value
         FROM   (SELECT lt.serial_tot,
                        lt.total_value,
                        SUM (lt.total_value)
                          over (
                            ORDER BY lt.serial_tot ROWS unbounded preceding )
                        t_subtotal_value
                 FROM   list_total lt) sq
         ORDER  BY sq.serial_tot)
/* Основной запрос */
SELECT sq.*,
       SUM(sq.real_value)
         over (
           PARTITION BY sq.serial_tot
           ORDER BY sq.serial_par ROWS unbounded preceding )
       "Нарастающая сумма"
FROM   (SELECT t.serial_tot,
               t.total_value,
               p.serial_par,
               p.parameter_value,
               Least(t.t_subtotal_value, p.p_subtotal_value) - Lag(
               Least(t.t_subtotal_value, p.p_subtotal_value), 1, 0)
               over (
                 ORDER BY t.serial_tot, p.serial_par ) real_value
        FROM   parameter p,
               total t
        WHERE  p.p_previous_subtotal_value < t.t_subtotal_value
               AND p.p_subtotal_value > t.t_previous_subtotal_value) sq
ORDER  BY sq.serial_tot,
          sq.serial_par
/
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402962
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrвыложу сюда его решение для тех,кому интересноНеформатированный поток сознания интересен только узконаправленным специалистам, не бывающих на этом форуме.
bhrи самому, чтоб не искать в дальнейшемКупи блокнотик или заведи блог.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39402964
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
убедили. Хрен знает, откуда такое форматирование взялось. когда выкладывал, выглядело красиво.
проще было ссылку выложить на обсуждение проблемы.
В любом случае, спасибо. помогли.
...
Рейтинг: 0 / 0
связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
    #39403274
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / связь по суммам. раздать Эн мужикам зарплату из М мешков с деньгами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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