| | 1 | ===== Надминување на вкупниот баланс на сите сметки на корисникот во сегашно време |
| | 2 | Овде ќе го собереме моменталниот баланс на сите сметки на корисникот и ќе провериме дали сумата на моменталната трансакцијата ја надминува таа вкупна вредност |
| | 3 | {{{#!sql |
| | 4 | WITH total_user_balance AS ( |
| | 5 | SELECT |
| | 6 | u.user_id, |
| | 7 | SUM(ta.balance) AS total_balance |
| | 8 | FROM |
| | 9 | transaction_account ta |
| | 10 | JOIN user u ON ta.user_id = u.user_id |
| | 11 | GROUP BY |
| | 12 | u.user_id |
| | 13 | ) |
| | 14 | SELECT |
| | 15 | u.user_id, |
| | 16 | u.user_name, |
| | 17 | SUM(tb.spent_amount) AS total_transaction_amount, |
| | 18 | tub.total_balance AS user_total_balance |
| | 19 | FROM |
| | 20 | transaction_account ta |
| | 21 | JOIN user u ON ta.user_id = u.user_id |
| | 22 | JOIN transaction_breakdown tb ON ta.transaction_account_id = tb.transaction_account_id |
| | 23 | JOIN transaction t ON tb.transaction_id = t.transaction_id |
| | 24 | JOIN total_user_balance tub ON u.user_id = tub.user_id |
| | 25 | WHERE |
| | 26 | t.date <= CURRENT_DATE -- Само активни трансакции до денешен датум |
| | 27 | GROUP BY |
| | 28 | u.user_id, u.user_name, tub.total_balance |
| | 29 | HAVING |
| | 30 | SUM(tb.spent_amount) > tub.total_balance -- Трансакциите го надминуваат ВКУПНИОТ моментален баланс |
| | 31 | ORDER BY |
| | 32 | u.user_id; |
| | 33 | }}} |