Changes between Initial Version and Version 1 of AdvancedReport6


Ignore:
Timestamp:
12/28/25 23:15:25 (5 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport6

    v1 v1  
     1===== Број на трансакции што ги надминуваат приходите на сметка
     2{{{#!sql
     3WITH 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)
     19SELECT
     20    account_name,
     21    COUNT(transaction_id) AS transactions_exceeding_balance
     22FROM
     23    CumulativeBalances
     24WHERE
     25    spent_amount > calculated_balance -- Кога потрошениот износ го надминува пресметаниот баланс
     26    AND spent_amount > 0
     27GROUP BY
     28    account_name
     29ORDER BY
     30    transactions_exceeding_balance DESC;
     31}}}
     32Ако сакаме да ги добиеме вкупните трансакции кои ги надминуваат средствата низ целиот систем, без групирање по сметки:
     33{{{#!sql
     34WITH 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)
     52SELECT
     53    COUNT(transaction_id) AS total_transactions_exceeding_balance
     54FROM
     55    CumulativeTotalBalances
     56WHERE
     57    spent_amount > calculated_total_balance -- Кога потрошениот износ го надминува кумулативниот баланс
     58    AND spent_amount > 0;
     59}}}