==== Просечно трошење во последните 3 дена за цел систем Просечно дневно трошење за последните три дена, земајќи ги предвид сите трансакции: {{{#!sql CREATE OR REPLACE FUNCTION get_average_daily_spending_last_3_days_fixed() RETURNS TABLE ( average_spending_last_3_days NUMERIC ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT SUM(daily_spending) / 3 AS average_spending_last_3_days FROM ( SELECT d.day::date AS transaction_date, COALESCE(SUM(tb.spent_amount), 0) AS daily_spending FROM ( SELECT CURRENT_DATE - 2 AS day UNION ALL SELECT CURRENT_DATE - 1 UNION ALL SELECT CURRENT_DATE ) d LEFT JOIN transaction t ON t.date::date = d.day LEFT JOIN transaction_breakdown tb ON t.transaction_id = tb.transaction_id GROUP BY d.day ) daily_totals; END; $$; }}} ==== Релациона алгебра - T(transaction_id, date) - TB(transaction_id, spent_amount) - D(day) -- генерирана релација со последните 3 дена Генерирање на последните 3 дена: - D ← { CURRENT_DATE − 2, CURRENT_DATE − 1, CURRENT_DATE } LEFT JOIN со трансакции: - J1 ← D ⟕,,DATE(T.date) = D.day,, T - J2 ← J1 ⟕,,T.transaction_id = TB.transaction_id,, TB Групирање по ден и пресметка на дневно трошење: - G ← γ,,day; Σ(spent_amount) → daily_spending,,(J2) Пресметка на просек (фиксно делење со 3): - R_final ← γ,,; (Σ(daily_spending) / 3) → average_spending_last_3_days,,(G)