Функция агрегации Oracle для выделения суммы
Предположим, у меня есть 2 таблицыT1
а такжеT2
следующее
T1
:
bag_id bag_type capacity
------|--------|--------
1 A 500
2 A 300
3 A 100
4 B 200
5 B 100
T2
:
item_type item_amount
---------|-----------
A 850
B 300
Каждая запись в таблицеT1
представляет сумку и ее вместимость, здесь у меня есть 5 сумок. Я хочу написать SQL, который выделяет элементы в таблицеT2
в каждую сумку одинакового типа, т.е. результат должен быть таким
bag_id bag_type capacity allocated_amount
------|--------|--------|----------------
1 A 500 500
2 A 300 300
3 A 100 50
4 B 200 200
5 B 100 100
Следовательно,Я нахожу какую-то функцию агрегирования, давайте назовем ееallocate()
, который может произвести столбецallocated_amount
как указано выше. У меня есть предположение, что, если существует, это может быть использовано так
select
t1.bag_id,
t1.bag_type,
t1.capacity,
allocate(t2.item_amount, t1.capacity)
over (partition by t1.bag_type order by t1.capacity desc) as allocatd_amount
from t1, t2
where t2.item_type = t1.bag_type
Мое текущее решение - использовать временную таблицу и цикл PL / SQL для расчета, но я надеюсь, что смогу сделать это с одним простым SQL.