| | 1 | = Извештај по тагови |
| | 2 | |
| | 3 | ==== Опис |
| | 4 | Овој поглед обезбедува преглед на потрошувачката по тагови, со што се овозможува категоризација и анализа на трошоците според нивната намена (храна, транспорт, сметки, забава и сл.) |
| | 5 | |
| | 6 | Погледот ги поврзува трансакциите со нивните тагови и ја сумира вкупната потрошувачка за секој таг |
| | 7 | |
| | 8 | ==== Табели опфатени со погледот |
| | 9 | - `tag` |
| | 10 | - `tag_assigned_to_transaction` |
| | 11 | - `transaction` |
| | 12 | - `transaction_breakdown` |
| | 13 | |
| | 14 | ==== SQL код |
| | 15 | {{{#!sql |
| | 16 | CREATE OR REPLACE VIEW vw_spending_by_tag AS |
| | 17 | SELECT |
| | 18 | tg.tag_id, |
| | 19 | tg.tag_name, |
| | 20 | |
| | 21 | COALESCE(SUM(tb.spent_amount), 0) AS total_spent, |
| | 22 | COUNT(DISTINCT t.transaction_id) AS transaction_count |
| | 23 | |
| | 24 | FROM tag tg |
| | 25 | JOIN tag_assigned_to_transaction tat |
| | 26 | ON tat.tag_id = tg.tag_id |
| | 27 | JOIN transaction t |
| | 28 | ON t.transaction_id = tat.transaction_id |
| | 29 | JOIN transaction_breakdown tb |
| | 30 | ON tb.transaction_id = t.transaction_id |
| | 31 | |
| | 32 | GROUP BY |
| | 33 | tg.tag_id, |
| | 34 | tg.tag_name; |
| | 35 | }}} |
| | 36 | |
| | 37 | ==== Објаснување на логиката |
| | 38 | - Се земаат само трансакции кои имаат доделен таг |
| | 39 | - `spent_amount` се агрегира по таг |
| | 40 | - `COUNT(DISTINCT ...)` се користи за да се избегне дуплирање на трансакции |
| | 41 | |
| | 42 | ==== Причина за користење |
| | 43 | - категоризацијата е суштинска за лични финансии |
| | 44 | - овозможува анализа на трошоци по намена |
| | 45 | - ја елиминира потребата од сложени `JOIN` и `GROUP BY` барања |