Changes between Version 1 and Version 2 of AdvancedReport17


Ignore:
Timestamp:
12/29/25 20:03:58 (4 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport17

    v1 v2  
    1 ===== Вкупно трошење според тагови
     1==== Вкупно трошење според тагови
    22Вкупно трошење групирано според тагови за тековниот месец
    33{{{#!sql
    4 SELECT
    5     tg.tag_name,
    6     SUM(tb.spent_amount) AS total_spent
    7 FROM
    8     tag tg
    9 JOIN tag_assigned_to_transaction tat ON tg.tag_id = tat.tag_id
    10 JOIN transaction t ON tat.transaction_id = t.transaction_id
    11 JOIN transaction_breakdown tb ON t.transaction_id = tb.transaction_id
    12 WHERE
    13     EXTRACT(MONTH FROM t.date) = EXTRACT(MONTH FROM CURRENT_DATE)
    14     AND EXTRACT(YEAR FROM t.date) = EXTRACT(YEAR FROM CURRENT_DATE)
    15 GROUP BY
    16     tg.tag_name
    17 ORDER BY
    18     total_spent DESC;
     4CREATE OR REPLACE FUNCTION get_total_spent_by_tag_current_month()
     5RETURNS TABLE (
     6    tag_name TEXT,
     7    total_spent NUMERIC
     8)
     9LANGUAGE plpgsql
     10AS $$
     11BEGIN
     12    RETURN QUERY
     13    SELECT
     14        tg.tag_name,
     15        COALESCE(SUM(tb.spent_amount), 0) AS total_spent
     16    FROM tag tg
     17    JOIN tag_assigned_to_transaction tat
     18        ON tg.tag_id = tat.tag_id
     19    JOIN transaction t
     20        ON tat.transaction_id = t.transaction_id
     21    JOIN transaction_breakdown tb
     22        ON t.transaction_id = tb.transaction_id
     23    WHERE EXTRACT(MONTH FROM t.date) = EXTRACT(MONTH FROM CURRENT_DATE)
     24      AND EXTRACT(YEAR FROM t.date) = EXTRACT(YEAR FROM CURRENT_DATE)
     25    GROUP BY tg.tag_name
     26    ORDER BY total_spent DESC;
     27END;
     28$$;
    1929}}}
     30
     31==== Релациона алгебра
     32- TG(tag_id, tag_name)
     33- TAT(tag_id, transaction_id)
     34- T(transaction_id, date)
     35- TB(transaction_id, spent_amount)
     36
     37JOIN на сите табели:
     38- J1 ← TG ⨝,,TG.tag_id = TAT.tag_id,, TAT
     39- J2 ← J1 ⨝,,TAT.transaction_id = T.transaction_id,, T
     40- J3 ← J2 ⨝,,T.transaction_id = TB.transaction_id,, TB
     41
     42Филтрирање по тековен месец и година:
     43- F ← σ,,EXTRACT(MONTH FROM date) = EXTRACT(MONTH FROM CURRENT_DATE) ∧ EXTRACT(YEAR FROM date) = EXTRACT(YEAR FROM CURRENT_DATE),,(J3)
     44
     45Групирање и агрегација по таг:
     46- G ← γ,,tag_name; SUM(spent_amount) → total_spent,,(F)
     47
     48Подредување по вкупно потрошено:
     49- R_final ← τ,,total_spent DESC,,(G)