| | 41 | |
| | 42 | ==== Релациона алгебра |
| | 43 | - U(user_id, user_name) |
| | 44 | - TA(transaction_account_id, user_id) |
| | 45 | - TB(transaction_id, transaction_account_id, spent_amount, earned_amount) |
| | 46 | - T(transaction_id, transaction_name, date) |
| | 47 | |
| | 48 | JOIN на сите табели: |
| | 49 | - J1 ← TA ⨝,,TA.user_id = U.user_id,, U |
| | 50 | - J2 ← J1 ⨝,,TA.transaction_account_id = TB.transaction_account_id,, TB |
| | 51 | - J3 ← J2 ⨝,,TB.transaction_id = T.transaction_id,, T |
| | 52 | |
| | 53 | Пресметка на вкупен кумулативен баланс по корисник: |
| | 54 | - CT ← γ,,user_id, user_name, transaction_id, transaction_name, transaction_amount, transaction_date; Σ(transaction_amount) OVER (PARTITION BY user_id ORDER BY transaction_date) → calculated_total_balance,,(J3) |
| | 55 | |
| | 56 | каде `transaction_amount = spent_amount` и кумулативната сума е |
| | 57 | `Σ(earned_amount - spent_amount)` за сите сметки на корисникот |
| | 58 | |
| | 59 | Филтрирање на трансакции кои го надминуваат вкупниот баланс: |
| | 60 | - R ← σ,,transaction_amount > calculated_total_balance ∧ transaction_amount > 0,,(CT) |
| | 61 | |
| | 62 | Подредување хронолошки (по корисник, од најнова кон најстара трансакција): |
| | 63 | - R_final ← τ,,user_id, transaction_date DESC,,(R) |