假设我有一个系统,用户可以根据活动获取令牌。对于任何令牌x,我想知道使用令牌x的用户获得了哪些其他令牌。
例如:
Table Tokens:
PrimaryKey = TokenID
TokenId | UserID | TokenName | TokenGiver
-----------------------------------------
111 | 1 | token_a| bob
222 | 1 | token_b| bob
333 | 1 | token_c| bob
444 | 2 | token_a| bob
555 | 2 | token_c| bob
666 | 3 | token_b| bob
777 | 4 | token_c| bob
888 | 5 | token_d| bob
预期输出,与此相近:
TokenName | count | AlsoEarned
------------------------------
token_a | 2 | [token_b: 1, token_c: 2]
token_b | 2 | [token_a: 1, token_c: 1]
token_c | 3 | [token_a: 2, token_b: 1]
token_d | 1 | []
说明:对于令牌\u a,userid=1和userid=2都获得了它。userid=1还获得了token\u b和token\u c,userid=2还获得了token\u c。因此,对于令牌a,我们有[令牌b:1,令牌c:2]
2条答案
按热度按时间6yt4nkrj1#
您可以通过self-join获取基本数据
那么你似乎希望在这上面加一个聚合:
mtb9vblg2#
下面是bigquery标准sql
如果要应用于问题的样本数据,则输出为