==== Трансакции според тагови со највисоко трошење за цел систем {{{#!sql CREATE OR REPLACE FUNCTION get_total_spent_by_tag_system() RETURNS TABLE ( tag_name TEXT, total_spent NUMERIC ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT tg.tag_name, COALESCE(SUM(tb.spent_amount), 0) AS total_spent FROM transaction_breakdown tb JOIN transaction t ON tb.transaction_id = t.transaction_id JOIN tag_assigned_to_transaction tat ON t.transaction_id = tat.transaction_id JOIN tag tg ON tat.tag_id = tg.tag_id GROUP BY tg.tag_name ORDER BY total_spent DESC; END; $$; }}} ==== Релациона алгебра - TB(transaction_id, spent_amount) - T(transaction_id, date) - TAT(tag_id, transaction_id) - TG(tag_id, tag_name) JOIN на сите табели: - J1 ← TB ⨝,,TB.transaction_id = T.transaction_id,, T - J2 ← J1 ⨝,,T.transaction_id = TAT.transaction_id,, TAT - J3 ← J2 ⨝,,TAT.tag_id = TG.tag_id,, TG Групирање и агрегација по таг: - G ← γ,,tag_name; SUM(spent_amount) → total_spent,,(J3) Подредување по вкупно потрошено: - R_final ← τ,,total_spent DESC,,(G)