【发布时间】:2020-08-20 22:49:22
【问题描述】:
我有一个查询,我试图根据两列的组合来组合表和求和结果。我想将表 2 和表 3 中的组与表 1 的名称和计数相匹配。然后,应将计数相加,以便每个名称都列出一次。但是,如果工作的人是 UU 组和 Z 组,那么他/她应该需要将他们的组 Z 计数与他们的组 UU 计数分开列出。如果此人作为 Z 组和 UU 组工作,他们将被列出两次。我需要根据特定条件拆分结果(下例中 Portal 和 Group 的组合)
Table 1
+--------+------+-------+
| Portal | Name | Count |
+--------+------+-------+
| A | Bob | 3 |
| A | Joe | 6 |
| B | Joe | 6 |
| B | Bob | 2 |
| C | Bob | 5 |
+--------+------+-------+
Table 2
+-------+------+
| Group | Name |
+-------+------+
| Z | Bob |
| Y | Joe |
+-------+------+
Table 3
+-------+------+
| Group | Name |
+-------+------+
| UU | Bob |
| UU | Jill |
+-------+------+
Output
+-------+------+-------+
| Group | Name | Count |
+-------+------+-------+
| Z | Bob | 8 |
| UU | Bob | 2 |
| Y | Joe | 12 |
+-------+------+-------+
请注意,Bob 的 Portal B 被单独计算,因为他在 UU 组中。 UU 组仅在门户 B 中工作。Bob 的门户 A 和 C 相加在一起,因为他是这些门户中的 Z 组。与此同时,Joe 将他的所有计数汇总在一行中,因为他根本不是 UU。提前感谢您提供任何见解。
【问题讨论】:
-
组和门户之间的关系如何?您的样本数据没有任何迹象。另一方面,您必须列出用户组,其目的似乎不清楚。
-
您应该更详细地解释 - 输出中的每一行。到目前为止 - 它非常不清楚和令人困惑,以至于完全没有意义
-
请解释您如何计算
8和2。你怎么知道“A”和“C”和“Z”一起去? -
唯一的关系是Group UU总是在Portal B中。除此之外,没有任何关系。任何组都可以在任何门户中工作。输出:Bob 在除门户 B 之外的每个门户中都是 Z。通过添加 5+3(来自门户 A 和 C 的计数),您得到 8。Bob 是门户 B 中的 UU,所以我们从门户 B 中得到 2。Joe 是组 Y,所以我们将他所有门户中的所有计数加起来,根本没有分开。一个人可以是 Z 组和 UU 组,但他们只能在 Portal B 中作为 UU 组工作。
-
我正在做的是将组添加到名称中,并将所有门户的所有计数加在一起。唯一的例外是,当一个人是 Group UU 角色时(仅出现在 Portal B 中),该计数需要分开。
标签: sql join count google-bigquery