2015-06-21 3 views
0

У меня есть таблица TRANSFERS, которая содержит следующие столбцы: account_id, father_account_id, amount, type.Расчет суммы иерархического запроса, сгруппированный по типу

В этой таблице представлены все переводы денег, сделанные с конкретной учетной записи, их количество и то, что они платили по видам (например, питание/школа/налоги и т. Д.).

Что мне нужно сделать, это для каждой основной учетной записи (учетной записи без родителя) узнать, сколько денег было переведено из нее (что означает суммирование и добавление также переводов со своих дочерних учетных записей), сгруппированных по типу ,

Например:

account_id | type | amount 

    1234 | food | 500 

    1234 | taxes | 750 

    1111 | food | 200 

    1111 | school | 600 

Я посмотрел вокруг и не смогли найти решение в любом месте. Любая помощь будет очень аппетитной! Спасибо заранее!

+2

Есть несколько уровней иерархии или только один уровень? Кроме того, можете ли вы обновить свой пример с помощью параметра father_account_id? – Nick

+0

«Разделенный по типу» не имеет большого смысла. Вы имели в виду «сгруппированные по типу»? –

+0

@BobJarvis Да, извините, что я имел в виду (: –

ответ

0

Вы можете использовать оператор connect_by_root и значение сумм для каждого корневого идентификатора и типа:

select root account_id, type, sum(amount) amount 
    from (
    select connect_by_root(account_id) root, type, amount 
     from transfers 
     connect by father_account_id = prior account_id and type = prior type 
     start with father_account_id is null) 
    group by root, type 

SQLFiddle

Смежные вопросы