| | 47 | |
| | 48 | ==== Релациона алгебра |
| | 49 | - U(user_id, user_name) |
| | 50 | - TA(transaction_account_id, user_id, account_name) |
| | 51 | - TB(transaction_id, transaction_account_id, spent_amount, earned_amount) |
| | 52 | - T(transaction_id, transaction_name, date) |
| | 53 | |
| | 54 | JOIN на сите табели: |
| | 55 | - J1 := TA ⨝_{TA.user_id = U.user_id} U |
| | 56 | - J2 := J1 ⨝_{TA.transaction_account_id = TB.transaction_account_id} TB |
| | 57 | - J3 := J2 ⨝_{TB.transaction_id = T.transaction_id} T |
| | 58 | |
| | 59 | Филтер според име на акаунт: |
| | 60 | - F1 := σ_{account_name = p_account_name}(J3) |
| | 61 | |
| | 62 | Пресметка на кумулативен баланс: |
| | 63 | - CB := γ_{user_id, user_name, account_name, transaction_id, transaction_name, transaction_amount, transaction_date; |
| | 64 | Σ(transaction_amount) OVER (PARTITION BY transaction_account_id ORDER BY transaction_date) → calculated_balance}(F1) |
| | 65 | |
| | 66 | каде `transaction_amount = spent_amount` и кумулативната сума е `Σ(earned_amount - spent_amount)` |
| | 67 | |
| | 68 | Филтрирање на трансакциите кои го надминуваат балансот: |
| | 69 | - R := σ_{transaction_amount > calculated_balance ∧ transaction_amount > 0}(CB) |
| | 70 | |
| | 71 | Подредување хронолошки(почнувајќи од најновата трансакција до најстарата): |
| | 72 | - R_final := τ_{transaction_date DESC}(R) |