Changes between Version 1 and Version 2 of AdvancedReport12


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

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport12

    v1 v2  
    1 ===== Дневен буџет до крајот на месецот за корисник
     1==== Дневен буџет до крајот на месецот за корисник
    22Дневен буџет базиран на вкупниот баланс на сите сметки на корисникот
    33{{{#!sql
    4 SELECT
    5     SUM(ta.balance) / (DATE_PART('day', DATE_TRUNC('month', CURRENT_DATE + INTERVAL '1 MONTH') - INTERVAL '1 DAY') - DATE_PART('day', CURRENT_DATE)) AS daily_budget
    6 FROM
    7     transaction_account ta
    8 WHERE
    9     ta.user_id = 101; -- ID на конкретниот корисник
     4CREATE OR REPLACE FUNCTION get_daily_budget_user(
     5    p_user_id INT
     6)
     7RETURNS TABLE (
     8    daily_budget NUMERIC
     9)
     10LANGUAGE plpgsql
     11AS $$
     12BEGIN
     13    RETURN QUERY
     14    SELECT
     15        COALESCE(SUM(ta.balance), 0) /
     16        (DATE_PART('day', DATE_TRUNC('month', CURRENT_DATE + INTERVAL '1 MONTH') - INTERVAL '1 DAY')
     17         - DATE_PART('day', CURRENT_DATE) + 1) AS daily_budget
     18    FROM transaction_account ta
     19    WHERE ta.user_id = p_user_id;
     20END;
     21$$;
    1022}}}
     23
     24==== Релациона алгебра
     25- TA(transaction_account_id, user_id, balance)
     26
     27Филтрирање по корисник:
     28- F ← σ,,user_id = p_user_id,,(TA)
     29
     30Агрегација на вкупен баланс:
     31- S ← γ,,; SUM(balance) → total_balance,,(F)
     32
     33Пресметка на дневен буџет до крајот на месецот:
     34- R_final ← γ,,; total_balance / (DATE_PART('day', DATE_TRUNC('month', CURRENT_DATE + INTERVAL '1 MONTH') - INTERVAL '1 DAY')- DATE_PART('day', CURRENT_DATE) + 1) → daily_budget,,(S)