SQL 中唯一的非重复值对
Unique pairs of non-repeating values in SQL
问题:
我有一个 BigQuery SQL table 格式如下:
group
users
A
1,2,3
B
1,5,3
C
3,6,1
D
0,1,2
我想找到每个组和用户之间所有可能的唯一对,这样 table 将被格式化为:
group1
group2
group1_users
group2_users
A
B
1,2,3
1,5,3
A
C
1,2,3
3,6,1
A
D
1,2,3
0,1,2
B
C
1,5,3
3,6,1
B
D
1,5,3
0,1,2
C
D
3,6,1
0,1,2
我不想重复逆对。因此,如果对 A,B
已经分别存在于 group1
和 group2
列中,我 不 希望对 B,A
成为一个选项.
我试过的:
我对如何实现这一点感到困惑。我尝试修改其他帖子(here, here 等)的代码,但无济于事。
此查询returns您要查找的内容:
with my_data as (
select "A" as _group, [1,2,3] as users
UNION ALL
select "B" as _group, [1,5,3] as users
UNION ALL
select "C" as _group, [3,6,1] as users
UNION ALL
select "D" as _group, [0,1,2] as users
)
SELECT
l._group as _group_1,
r._group _group_2,
l.users as group1_users,
r.users group1_users,
FROM my_data l
JOIN my_data r
ON l._group < r._group
问题:
我有一个 BigQuery SQL table 格式如下:
group | users |
---|---|
A | 1,2,3 |
B | 1,5,3 |
C | 3,6,1 |
D | 0,1,2 |
我想找到每个组和用户之间所有可能的唯一对,这样 table 将被格式化为:
group1 | group2 | group1_users | group2_users |
---|---|---|---|
A | B | 1,2,3 | 1,5,3 |
A | C | 1,2,3 | 3,6,1 |
A | D | 1,2,3 | 0,1,2 |
B | C | 1,5,3 | 3,6,1 |
B | D | 1,5,3 | 0,1,2 |
C | D | 3,6,1 | 0,1,2 |
我不想重复逆对。因此,如果对 A,B
已经分别存在于 group1
和 group2
列中,我 不 希望对 B,A
成为一个选项.
我试过的:
我对如何实现这一点感到困惑。我尝试修改其他帖子(here, here 等)的代码,但无济于事。
此查询returns您要查找的内容:
with my_data as (
select "A" as _group, [1,2,3] as users
UNION ALL
select "B" as _group, [1,5,3] as users
UNION ALL
select "C" as _group, [3,6,1] as users
UNION ALL
select "D" as _group, [0,1,2] as users
)
SELECT
l._group as _group_1,
r._group _group_2,
l.users as group1_users,
r.users group1_users,
FROM my_data l
JOIN my_data r
ON l._group < r._group