| | 1 | ===== Број на трансакции што ги надминуваат приходите на сметка |
| | 2 | {{{#!sql |
| | 3 | WITH CumulativeBalances AS ( |
| | 4 | SELECT |
| | 5 | t.transaction_id, |
| | 6 | ta.account_name, |
| | 7 | SUM(tb.earned_amount - tb.spent_amount) OVER ( |
| | 8 | PARTITION BY ta.transaction_account_id |
| | 9 | ORDER BY t.date |
| | 10 | ) AS calculated_balance, |
| | 11 | tb.spent_amount |
| | 12 | FROM |
| | 13 | transaction_account ta |
| | 14 | JOIN |
| | 15 | transaction_breakdown tb ON ta.transaction_account_id = tb.transaction_account_id |
| | 16 | JOIN |
| | 17 | transaction t ON tb.transaction_id = t.transaction_id |
| | 18 | ) |
| | 19 | SELECT |
| | 20 | account_name, |
| | 21 | COUNT(transaction_id) AS transactions_exceeding_balance |
| | 22 | FROM |
| | 23 | CumulativeBalances |
| | 24 | WHERE |
| | 25 | spent_amount > calculated_balance -- Кога потрошениот износ го надминува пресметаниот баланс |
| | 26 | AND spent_amount > 0 |
| | 27 | GROUP BY |
| | 28 | account_name |
| | 29 | ORDER BY |
| | 30 | transactions_exceeding_balance DESC; |
| | 31 | }}} |
| | 32 | Ако сакаме да ги добиеме вкупните трансакции кои ги надминуваат средствата низ целиот систем, без групирање по сметки: |
| | 33 | {{{#!sql |
| | 34 | WITH CumulativeTotalBalances AS ( |
| | 35 | SELECT |
| | 36 | t.transaction_id, |
| | 37 | u.user_id, |
| | 38 | SUM(tb.earned_amount - tb.spent_amount) OVER ( |
| | 39 | PARTITION BY u.user_id |
| | 40 | ORDER BY t.date |
| | 41 | ) AS calculated_total_balance, |
| | 42 | tb.spent_amount |
| | 43 | FROM |
| | 44 | transaction_account ta |
| | 45 | JOIN |
| | 46 | user u ON ta.user_id = u.user_id |
| | 47 | JOIN |
| | 48 | transaction_breakdown tb ON ta.transaction_account_id = tb.transaction_account_id |
| | 49 | JOIN |
| | 50 | transaction t ON tb.transaction_id = t.transaction_id |
| | 51 | ) |
| | 52 | SELECT |
| | 53 | COUNT(transaction_id) AS total_transactions_exceeding_balance |
| | 54 | FROM |
| | 55 | CumulativeTotalBalances |
| | 56 | WHERE |
| | 57 | spent_amount > calculated_total_balance -- Кога потрошениот износ го надминува кумулативниот баланс |
| | 58 | AND spent_amount > 0; |
| | 59 | }}} |