diff options
| author | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-04-16 11:37:21 -0400 |
|---|---|---|
| committer | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-04-16 11:37:21 -0400 |
| commit | 615d44041d35ee1a08ddc66423f67a9d48f53ae9 (patch) | |
| tree | 9720d6a192e0bae9c7393b8b99ff8ae401ec7f72 /src/db/20251117-0-summary-view.sql | |
| parent | 51623bc995c29937bb0a13d5b71ff908be8d1a1c (diff) | |
| download | equity-tracker-615d44041d35ee1a08ddc66423f67a9d48f53ae9.tar.gz equity-tracker-615d44041d35ee1a08ddc66423f67a9d48f53ae9.tar.bz2 equity-tracker-615d44041d35ee1a08ddc66423f67a9d48f53ae9.zip | |
Switch to distrobox as base for development
Diffstat (limited to 'src/db/20251117-0-summary-view.sql')
| -rw-r--r-- | src/db/20251117-0-summary-view.sql | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/db/20251117-0-summary-view.sql b/src/db/20251117-0-summary-view.sql new file mode 100644 index 0000000..a4e8004 --- /dev/null +++ b/src/db/20251117-0-summary-view.sql @@ -0,0 +1,65 @@ +-- Yucky slow view, since it's sub-querying for each of the summation fields +-- AND has a subquery on the inner join to find the right symbols. Anyways it +-- should preview relative strength of treating equity transaction data as +-- immutable. Any application on top of this should get the full list of +-- records so it can construct helpful views of summations based on the history +-- of changes, and/or show price data over time +CREATE VIEW account_symbol_summary_view +AS +SELECT + acc.fiduciary_account_id, + acc.fiduciary_account_name, + acc.fiduciary_account_description, + acc.fiduciary_account_number, + acc.fiduciary_account_created_timestamp, + sym.equity_symbol_id, + sym.equity_symbol_type, + sym.equity_symbol_name, + sym.equity_symbol_managing_company, + (SELECT + SUM(ev.equity_change_quantity * ev.equity_change_type_score) + FROM equity_change_event ev + WHERE ev.fiduciary_account_id = acc.fiduciary_account_id + AND ev.equity_symbol_id = sym.equity_symbol_id + ) AS account_symbol_quantity, + (SELECT + printf( '%.2f', SUM(ev.equity_change_cost_basis_usd * ev.equity_change_type_score) / SUM(ev.equity_change_quantity * ev.equity_change_type_score)) + FROM equity_change_event ev + WHERE ev.fiduciary_account_id = acc.fiduciary_account_id + AND ev.equity_symbol_id = sym.equity_symbol_id + ) AS account_symbol_cost_basis_price, + (SELECT + printf( '%.2f', SUM(ev.equity_change_cost_basis_usd * ev.equity_change_type_score)) + FROM equity_change_event ev + WHERE ev.fiduciary_account_id = acc.fiduciary_account_id + AND ev.equity_symbol_id = sym.equity_symbol_id + ) AS account_symbol_cost_basis_total_usd, + (SELECT + printf( '%.2f', SUM(ev.equity_change_quantity) * ( + SELECT + iev.equity_change_est_price + FROM equity_change_event iev + WHERE iev.fiduciary_account_id = acc.fiduciary_account_id + AND iev.equity_symbol_id = sym.equity_symbol_id + ORDER BY iev.equity_change_timestamp DESC + LIMIT 1 + )) + FROM equity_change_event ev + WHERE ev.fiduciary_account_id = acc.fiduciary_account_id + AND ev.equity_symbol_id = sym.equity_symbol_id + ) AS account_symbol_last_effective_price, + (SELECT + ev.equity_change_timestamp + FROM equity_change_event ev + WHERE ev.fiduciary_account_id = acc.fiduciary_account_id + AND ev.equity_symbol_id = sym.equity_symbol_id + ORDER BY ev.equity_change_timestamp DESC + LIMIT 1 + ) AS account_symbol_last_update_timestamp +FROM fiduciary_account acc +INNER JOIN equity_symbol sym ON EXISTS( + SELECT * + FROM equity_change_event e + WHERE e.fiduciary_account_id = acc.fiduciary_account_id + AND e.equity_symbol_id = sym.equity_symbol_id +);
\ No newline at end of file |
