0

I have a two tables:

|currency_type|user_id|amount|
|-------------|-------|------|
|          aaa|    404|  2000|
|          bbb|    404|   300|
|          ccc|     22|   444|
|currency_type|user_id|balance|
|-------------|-------|-------|
|          aaa|    404|     30|
|          xxx|    404|     50|

How can i get sum of both tables (amount + balance) for each currency_type respectively? Example of result for user_id = 404 And performance is matter for me, so faster is better.

|currency_type|user_id|    sum|
|-------------|-------|-------|
|          aaa|    404|   2030|
|          bbb|    404|    300|
|          xxx|    404|     50|

1 Answer 1

2

Try this:

create table t1 (currency_type text,user_id int,amount int);
create table t2 (currency_type text,user_id int,balance int);

insert into t1 values
('aaa',    404,  2000),
('bbb',    404,   300),
('ccc',     22,   444);

insert into t2 values
('aaa', 404, 30),
('xxx', 404, 50);

with t1t2 as (
  select currency_type, user_id, amount from t1
  union all
  select currency_type, user_id, balance as amount from t2
)
select currency_type, user_id, sum(amount)
from t1t2
where user_id = 404
group by currency_type, user_id

Result

currency_type | user_id |  sum
:------------ | ------: | ---:
aaa           |     404 | 2030
bbb           |     404 |  300
xxx           |     404 |   50

Example

https://dbfiddle.uk/?rdbms=postgres_11&fiddle=89c7d5b9ee8d5ce1eb42ee5cda961d0c

Explanation

Just combine both tables but rename balance as amount for just the time being in the query. Now you'd have balances and amounts in the same table. All that remains is total up the amount column for each currency_type/user_id combination.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.