Changes between Version 1 and Version 2 of AdvancedReport11


Ignore:
Timestamp:
12/29/25 19:43:14 (4 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport11

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