| 165 | | SELECT |
| 166 | | TO_CHAR(t.date, 'YYYY-MM') AS month, -- Форматирање на датумот во формат "Година-Месец" |
| 167 | | SUM(CASE WHEN tb.earned_amount > 0 THEN tb.earned_amount ELSE 0 END) AS total_income, -- Вкупен приход |
| 168 | | SUM(CASE WHEN tb.spent_amount > 0 THEN tb.spent_amount ELSE 0 END) AS total_expense, -- Вкупен расход |
| 169 | | SUM(CASE WHEN tb.earned_amount > 0 THEN tb.earned_amount ELSE 0 END) - |
| 170 | | SUM(CASE WHEN tb.spent_amount > 0 THEN tb.spent_amount ELSE 0 END) AS net_balance -- Нето состојба |
| 171 | | FROM |
| 172 | | transaction_breakdown tb |
| 173 | | JOIN |
| 174 | | transaction t ON tb.transaction_id = t.transaction_id |
| 175 | | GROUP BY |
| 176 | | TO_CHAR(t.date, 'YYYY-MM') -- Групирање по месец |
| 177 | | ORDER BY |
| 178 | | month; |
| | 165 | CREATE OR REPLACE FUNCTION get_monthly_system_balance() |
| | 166 | RETURNS TABLE ( |
| | 167 | month TEXT, |
| | 168 | total_income NUMERIC, |
| | 169 | total_expense NUMERIC, |
| | 170 | net_balance NUMERIC |
| | 171 | ) |
| | 172 | LANGUAGE plpgsql |
| | 173 | AS $$ |
| | 174 | BEGIN |
| | 175 | RETURN QUERY |
| | 176 | SELECT |
| | 177 | TO_CHAR(t.date, 'YYYY-MM'), |
| | 178 | SUM(tb.earned_amount), |
| | 179 | SUM(tb.spent_amount), |
| | 180 | SUM(tb.earned_amount) - SUM(tb.spent_amount) |
| | 181 | FROM transaction t |
| | 182 | JOIN transaction_breakdown tb ON t.transaction_id = tb.transaction_id |
| | 183 | GROUP BY TO_CHAR(t.date, 'YYYY-MM') |
| | 184 | ORDER BY month; |
| | 185 | END; |
| | 186 | $$; |