Changes between Version 1 and Version 2 of AdvancedReport13


Ignore:
Timestamp:
12/29/25 19:50:46 (5 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport13

    v1 v2  
    1 ===== Долг на кредитна картичка од минатиот месец за цел систем
     1==== Долг на кредитна картичка од минатиот месец за цел систем
    22Вкупна сума потрошена од сметките обележани како „кредитна картичка“ за минатиот месец
    33{{{#!sql
    4 SELECT
    5     SUM(tb.spent_amount) AS credit_card_debt
    6 FROM
    7     transaction_breakdown tb
    8 JOIN transaction_account ta ON tb.transaction_account_id = ta.transaction_account_id
    9 JOIN transaction t ON tb.transaction_id = t.transaction_id
    10 WHERE
    11     (ta.account_name ILIKE '%кредитна%' OR ta.account_name ILIKE '%credit%')
    12     AND EXTRACT(MONTH FROM t.date) = EXTRACT(MONTH FROM CURRENT_DATE - INTERVAL '1 MONTH')
    13     AND EXTRACT(YEAR FROM t.date) = EXTRACT(YEAR FROM CURRENT_DATE - INTERVAL '1 MONTH');
     4CREATE OR REPLACE FUNCTION get_credit_card_debt_last_month()
     5RETURNS TABLE (
     6    credit_card_debt NUMERIC
     7)
     8LANGUAGE plpgsql
     9AS $$
     10BEGIN
     11    RETURN QUERY
     12    SELECT
     13        COALESCE(SUM(tb.spent_amount), 0) AS credit_card_debt
     14    FROM transaction_breakdown tb
     15    JOIN transaction_account ta
     16        ON tb.transaction_account_id = ta.transaction_account_id
     17    JOIN transaction t
     18        ON tb.transaction_id = t.transaction_id
     19    WHERE (ta.account_name ILIKE '%кредитна%' OR ta.account_name ILIKE '%credit%')
     20      AND EXTRACT(MONTH FROM t.date) = EXTRACT(MONTH FROM CURRENT_DATE - INTERVAL '1 MONTH')
     21      AND EXTRACT(YEAR FROM t.date) = EXTRACT(YEAR FROM CURRENT_DATE - INTERVAL '1 MONTH');
     22END;
    1423}}}
     24
     25==== Релациона алгебра
     26- TA(transaction_account_id, account_name)
     27- TB(transaction_id, transaction_account_id, spent_amount)
     28- T(transaction_id, date)
     29
     30JOIN на сите табели:
     31- J1 ← TA ⨝,,TA.transaction_account_id = TB.transaction_account_id,, TB
     32- J2 ← J1 ⨝,,TB.transaction_id = T.transaction_id,, T
     33
     34Филтрирање на кредитни картички и минат месец:
     35- F ← σ,,(account_name ILIKE '%кредитна%' OR account_name ILIKE '%credit%') ∧ EXTRACT(MONTH FROM date) = EXTRACT(MONTH FROM CURRENT_DATE - INTERVAL '1 MONTH') ∧ EXTRACT(YEAR FROM date) = EXTRACT(YEAR FROM CURRENT_DATE - INTERVAL '1 MONTH'),,(J2)
     36
     37Агрегација на вкупен долг:
     38- R_final ← γ,,; SUM(spent_amount) → credit_card_debt,,(F)