| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Группировка итогов по дереву |
| Автор: turbanoff 26.5.2011, 20:48 | ||
Есть 2 таблицы.
нужно по таблице summs сформировать суммы с промежуточными итогами пример SUMMS: http://s2.ipicture.ru/ пример IEKR: http://s2.ipicture.ru/ нужный результат: http://s2.ipicture.ru/ |
| Автор: Zloxa 27.5.2011, 09:46 | ||||
1 скалярным подзапросом
2 моделью
Оба варианта - не айс |
| Автор: triclosan 27.5.2011, 11:34 |
| turbanoff, т.е. развернуть все дерево построчно и просуммировать AMOUNT по каждой ветке? |
| Автор: turbanoff 27.5.2011, 12:32 |
| triclosan Да - нужно просуммировать AMOUNT по каждой ветке. Но те ветки, которых нет - они не нужны. В примере для numb=3: есть только iekr_id =101 и =102, поэтому в итогах нет 20 и 201 1. У SUMMS iekr_id может быть только для конечных(листьев дерева) 2. Для каждого numb - свой итог |
| Автор: triclosan 27.5.2011, 14:04 | ||
с коленки:
под рукой ничего нет, что-то похожее возвращает? |
| Автор: Zloxa 27.5.2011, 14:08 | ||
Нет размотки по иерархии, нет нкопления. Дервяха тут вообще не к месту, результат деградирует к простому джойну. Полагаешь я перемудрил? Добавлено через 6 минут и 20 секунд Мне кажется есть еще способ решить задачу исползуя http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10002.htm#BABCDJDB. Но его ввели только в 11й версии, елси не в 11.2,а его под рукой у меня нет - попробовать (( |
| Автор: triclosan 27.5.2011, 14:47 |
не, просто попытался решить задачу на уровне своего понимания природы вещей. turbanoff, PL/SQL может заюзать? |
| Автор: turbanoff 27.5.2011, 16:31 |
| У меня 10 XE. Да PL/SQL можно. Результат в другую таблицу записать. В базе строк ~50к и растет. Ну и я уменьшил количество полей для примера Все, что я пробовал - работало, скажем, недостаточно быстро. Думал, мб если на SQL можно ухитриться - то быстрее буддет |
| Автор: Zloxa 27.5.2011, 16:40 |
если так, то в первом запросе не нужен start with и connect by в основном запросе. Вы попробовали предложенные мною варианты? мне безумно интересно какой из них оказался менее производительным на объеме. для реализации этого условия, в моих примерах можно добавить фильтр по SUMM_AMOUNT > 0 или SCALAR_SUM >0 |
| Автор: turbanoff 27.5.2011, 18:57 | ||
1-й за приемлемое время выполнить не удалось. Сейчас 2-й попробую |
| Автор: turbanoff 30.5.2011, 17:12 |
| 2-й тоже. возможно дело в том что в дереве довольно много элементов: 250 а запрос идет по всему дереву для каждого numb |