我的Database
中有几张桌子,并且所有人都有一个column
,名字相同的User
。现在我要计算每个表上每个用户的活动,所以现在我计算2个表上的活动,您可以看到名称分别为Result 1
和Result 2
。
结果1:
+--------+-----------------+
| Users | Number of Insert|
+--------+-----------------+
| Liam | 37 |
| Jacob | 16 |
| Ethan | 6 |
+--------+-----------------+
结果2:
+--------+-----------------+
| Users | Number of Insert|
+--------+-----------------+
| Liam | 7 |
| Jacob | 10 |
| Ethan | 9 |
| Elijah | 12 |
| Noah | 5 |
+--------+-----------------+
所以我想合并这个拖曳表,但是在用户列中我想删除精致的
并在Number of Insert
列中我希望SUM
拥有相同的用户,如果没有相同的用户,则显示无总和
例如:
以利亚,诺亚Result 1
表中没有值,所以最后一个问题是我希望output
像这样,但是如何?
输出:
+--------+-----------------+
| Users | Number of Insert|
+--------+-----------------+
| Liam | 44 |
| Jacob | 26 |
| Ethan | 15 |
| Elijah | 12 |
| Noah | 5 |
+--------+-----------------+
注意:在结果1和结果2中,“用户”列的值大部分 时间是相同的,但并非总是如此。
答案 0 :(得分:3)
完全外部联接和合并?
select
coalesce (r1.users, r2.users) as users,
coalesce (r1.number_of_insert, 0) + coalesce (r2.number_of_insert, 0)
from
result_1 r1
full outer join join result_2 r2 on
r1.users = r2.users
这假设您的结果1和2数据集已经如上形成。
答案 1 :(得分:2)
如果我理解正确,则可以使用union all
和group by
:
select user, sum(num)
from ((select user, num
from q1
) union all
(select user, num
from q2
)
) q
group by user;