Rest Budget in Grafana
This commit is contained in:
121
firefly_grafana/dashboard.sql
Normal file
121
firefly_grafana/dashboard.sql
Normal file
@@ -0,0 +1,121 @@
|
||||
SELECT
|
||||
t.id
|
||||
, a.id AS account_id
|
||||
, a.name AS account_name
|
||||
, aty.type
|
||||
, t.amount
|
||||
, tj.description AS tj_descr
|
||||
, tj.date
|
||||
, c.name AS category_name
|
||||
FROM firefly.transactions AS t
|
||||
INNER JOIN firefly.transaction_journals AS tj
|
||||
ON t.transaction_journal_id = tj.id
|
||||
LEFT JOIN firefly.category_transaction_journal as ctj
|
||||
ON tj.id = ctj.transaction_journal_id
|
||||
LEFT JOIN firefly.categories AS c
|
||||
ON c.id = ctj.category_id
|
||||
LEFT JOIN firefly.accounts AS a
|
||||
ON t.account_id = a.id
|
||||
LEFT JOIN firefly.account_types AS aty
|
||||
ON a.account_type_id = aty.id
|
||||
WHERE TRUE
|
||||
AND tj.DATE BETWEEN '2025-11-28' AND '2025-11-28'
|
||||
AND a.id = 1
|
||||
;
|
||||
|
||||
|
||||
/*
|
||||
Total Expanses of the month
|
||||
*/
|
||||
SELECT
|
||||
SUM(t.amount)
|
||||
FROM firefly.transactions AS t
|
||||
INNER JOIN firefly.transaction_journals AS tj
|
||||
ON t.transaction_journal_id = tj.id
|
||||
LEFT JOIN firefly.category_transaction_journal as ctj
|
||||
ON tj.id = ctj.transaction_journal_id
|
||||
LEFT JOIN firefly.categories AS c
|
||||
ON c.id = ctj.category_id
|
||||
LEFT JOIN firefly.accounts AS a
|
||||
ON t.account_id = a.id
|
||||
LEFT JOIN firefly.account_types AS aty
|
||||
ON a.account_type_id = aty.id
|
||||
WHERE TRUE
|
||||
AND tj.DATE BETWEEN ${__from:date:iso} AND ${__to:date:iso}
|
||||
AND a.id = 1
|
||||
;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Barchart with Budget
|
||||
*/
|
||||
SELECT
|
||||
c.name AS category_name
|
||||
, 500 AS budget
|
||||
, ABS(SUM(t.amount)) AS current_status
|
||||
FROM firefly.transactions AS t
|
||||
INNER JOIN firefly.transaction_journals AS tj
|
||||
ON t.transaction_journal_id = tj.id
|
||||
LEFT JOIN firefly.category_transaction_journal as ctj
|
||||
ON tj.id = ctj.transaction_journal_id
|
||||
LEFT JOIN firefly.categories AS c
|
||||
ON c.id = ctj.category_id
|
||||
LEFT JOIN firefly.accounts AS a
|
||||
ON t.account_id = a.id
|
||||
LEFT JOIN firefly.account_types AS aty
|
||||
ON a.account_type_id = aty.id
|
||||
WHERE TRUE
|
||||
AND tj.DATE BETWEEN "${__from:date:iso}" AND "${__to:date:iso}"
|
||||
AND a.id = 1
|
||||
GROUP BY 1,2
|
||||
ORDER BY 3 ASC
|
||||
LIMIT 10
|
||||
;
|
||||
|
||||
|
||||
/*
|
||||
Barchart with Budget difference stacked
|
||||
*/
|
||||
WITH calc_budget AS (
|
||||
SELECT
|
||||
c.name AS category_name
|
||||
, ABS(SUM(t.amount)) AS current_status
|
||||
, CASE
|
||||
WHEN c.name = 'Lebensmittel' THEN ${budget_lebensmittel}
|
||||
WHEN c.name = 'Unterhaltung: Ausgehen' THEN ${budget_unterhaltung_ausgehen}
|
||||
WHEN c.name = 'Sonstiges' THEN ${budget_sonstiges}
|
||||
WHEN c.name = 'Online Einkäufe' THEN ${budget_online_einkaeufe}
|
||||
WHEN c.name = 'Wohnen: Möbel' THEN ${budget_wohnen_moebel}
|
||||
WHEN c.name = 'Drogerie' THEN ${budget_drogerie}
|
||||
ELSE 0
|
||||
END AS budget
|
||||
FROM firefly.transactions AS t
|
||||
INNER JOIN firefly.transaction_journals AS tj
|
||||
ON t.transaction_journal_id = tj.id
|
||||
LEFT JOIN firefly.category_transaction_journal as ctj
|
||||
ON tj.id = ctj.transaction_journal_id
|
||||
LEFT JOIN firefly.categories AS c
|
||||
ON c.id = ctj.category_id
|
||||
LEFT JOIN firefly.accounts AS a
|
||||
ON t.account_id = a.id
|
||||
LEFT JOIN firefly.account_types AS aty
|
||||
ON a.account_type_id = aty.id
|
||||
WHERE TRUE
|
||||
AND tj.DATE BETWEEN "${__from:date:iso}" AND "${__to:date:iso}"
|
||||
AND a.id = 1
|
||||
AND c.name != "Monatliche Einzahlung"
|
||||
GROUP BY 1,3
|
||||
ORDER BY 2 DESC
|
||||
)
|
||||
SELECT
|
||||
category_name
|
||||
, current_status
|
||||
, CASE
|
||||
WHEN budget - current_status > 0 THEN budget - current_status
|
||||
ELSE 0
|
||||
END AS rest_budget
|
||||
FROM calc_budget
|
||||
WHERE TRUE
|
||||
AND budget > 0
|
||||
;
|
||||
Reference in New Issue
Block a user