bigquerqy sql link 组间共同 grid_id
bigquerqy sql link a common grid_id between groups
首发table.
with t1 as
(
Select 'obrien-t j' lname_forename_long,11 grid_id_ct ,'grid.416153.4' grid_id,2 name_seq ,1 group_seq UNION ALL
Select 'obrien-t j',1,'grid.1002.3',1,1 UNION ALL
Select 'obrien-terence',2,'grid.1008.9',1,2 UNION ALL
Select 'obrien-terence',4,'grid.416153.4',2,2 UNION ALL
Select 'obrien-terence',1,'grid.484852.7',3,2 UNION ALL
Select 'obrien-terence j',14,'grid.1002.3',1,3 UNION ALL
Select 'obrien-terence j',25,'grid.1008.9',2,3 UNION ALL
Select 'obrien-terence j',3,'grid.1019.9',3,3 UNION ALL
Select 'obrien-terence j',9,'grid.1623.6',4,3 UNION ALL
Select 'obrien-terence j',40,'grid.237081.f',5,3 UNION ALL
Select 'obrien-terence j',1,'grid.267362.4',6,3 UNION ALL
Select 'obrien-terence j',2,'grid.414094.c',7,3 UNION ALL
Select 'obrien-terence j',1,'grid.416060.5',8,3 UNION ALL
Select 'obrien-terence j',36,'grid.416153.4',9,3 UNION ALL
Select 'obrien-terence j',4,'grid.453219.8',10,3 UNION ALL
Select 'obrien-terence j',3,'grid.454055.5',11,3 UNION ALL
Select 'obrien-terence j',6,'grid.474069.8',12,3 UNION ALL
Select 'obrien-terence j',13,'grid.481253.9',13,3 UNION ALL
Select 'obrien-terence john',1,'grid.1002.3',1,4 UNION ALL
Select 'obrien-terence john',1,'grid.1008.9',2,4 UNION ALL
Select 'obrien-terence john',1,'grid.1623.6',3,4 UNION ALL
Select 'obrien-terence john',1,'grid.237081.f',4,4 UNION ALL
Select 'obrien-terence john',2,'grid.416153.4',5,4 UNION ALL
Select 'obrien-terrence',2,'grid.416153.4',1,5 UNION ALL
Select 'obrien-terrence j',1,'grid.416153.4',1,6 UNION ALL
Select 'obrien-terry',1,'grid.137628.9',1,7 UNION ALL
Select 'obrien-terry',2,'grid.237081.f',2,7 UNION ALL
Select 'obrien-terry',1,'grid.267362.4',3,7 UNION ALL
Select 'obrien-timothy',1,'grid.496867.2',1,8 UNION ALL
Select 'obrien-timothy',3,'grid.6142.1',2,8
)
select * from t1;
lname_forename_long
grid_id_ct
grid_id
name_seq
group_seq
obrien-t j
1
grid.1002.3
1
1
obrien-t j
11
grid.416153.4
2
1
obrien-terence
2
grid.1008.9
1
2
obrien-terence
4
grid.416153.4
2
2
obrien-terence
1
grid.484852.7
3
2
obrien-terence j
14
grid.1002.3
1
3
obrien-terence j
25
grid.1008.9
2
3
obrien-terence j
3
grid.1019.9
3
3
obrien-terence j
9
grid.1623.6
4
3
obrien-terence j
40
grid.237081.f
5
3
obrien-terence j
1
grid.267362.4
6
3
obrien-terence j
2
grid.414094.c
7
3
obrien-terence j
1
grid.416060.5
8
3
obrien-terence j
36
grid.416153.4
9
3
obrien-terence j
4
grid.453219.8
10
3
obrien-terence j
3
grid.454055.5
11
3
obrien-terence j
6
grid.474069.8
12
3
obrien-terence j
13
grid.481253.9
13
3
obrien-terence john
1
grid.1002.3
1
4
obrien-terence john
1
grid.1008.9
2
4
obrien-terence john
1
grid.1623.6
3
4
obrien-terence john
1
grid.237081.f
4
4
obrien-terence john
2
grid.416153.4
5
4
obrien-terrence
2
grid.416153.4
1
5
obrien-terrence j
1
grid.416153.4
1
6
obrien-terry
1
grid.137628.9
1
7
obrien-terry
2
grid.237081.f
2
7
obrien-terry
1
grid.267362.4
3
7
obrien-timothy
1
grid.496867.2
1
8
obrien-timothy
3
grid.6142.1
2
8
最终结果
enter image description here
愿望结果
颜色代表不同 group_seq 之间的 link。可能还有比我展示的更多的东西。
Group_seq 7 (o'brien-terry) 可以 linked 到 3 (o'brien-terence j) 如果我可以 link 这 2 那么我可以 link o 'brien-terry 到 1,2,3,4,5,6.
理想情况下,布尔标志 true 或 false 将有助于显示所有 group_seq 是 linked 和那些不是。
在此示例中,o'brien-timothy 将为 FALSE,所有其他将为 TRUE。
提前致谢。
它必须是 BQ 解决方案,最好不要创建函数或存储过程。
grid_id grid.416153.4 与 group_se 1,2,3,4,5,6
通用
lname_forename_long
grid_id_ct
grid_id
name_seq
group_seq
links
obrien-t j
1
grid.1002.3
1
1
obrien-t j
11
grid.416153.4
2
1
1,2,3,4,5,6
obrien-terence
2
grid.1008.9
1
2
obrien-terence
4
grid.416153.4
2
2
1,2,3,4,5,6
obrien-terence
1
grid.484852.7
3
2
obrien-terence j
14
grid.1002.3
1
3
3,7
obrien-terence j
25
grid.1008.9
2
3
obrien-terence j
3
grid.1019.9
3
3
obrien-terence j
9
grid.1623.6
4
3
obrien-terence j
40
grid.237081.f
5
3
obrien-terence j
1
grid.267362.4
6
3
obrien-terence j
2
grid.414094.c
7
3
obrien-terence j
1
grid.416060.5
8
3
obrien-terence j
36
grid.416153.4
9
3
1,2,3,4,5,6
obrien-terence j
4
grid.453219.8
10
3
obrien-terence j
3
grid.454055.5
11
3
obrien-terence j
6
grid.474069.8
12
3
obrien-terence j
13
grid.481253.9
13
3
3,4
obrien-terence john
1
grid.1002.3
1
4
obrien-terence john
1
grid.1008.9
2
4
obrien-terence john
1
grid.1623.6
3
4
obrien-terence john
1
grid.237081.f
4
4
3,4
obrien-terence john
2
grid.416153.4
5
4
1,2,3,4,5,6
obrien-terrence
2
grid.416153.4
1
5
1,2,3,4,5,6
obrien-terrence j
1
grid.416153.4
1
6
1,2,3,4,5,6
obrien-terry
1
grid.137628.9
1
7
obrien-terry
2
grid.237081.f
2
7
3,7
obrien-terry
1
grid.267362.4
3
7
obrien-timothy
1
grid.496867.2
1
8
obrien-timothy
3
grid.6142.1
2
8
考虑以下方法
select *, if(count(*) over win > 1, string_agg('' || group_seq) over win, '') links
from t1
window win as (partition by grid_id)
如果应用于您问题中的示例数据 - 输出为
首发table.
with t1 as
(
Select 'obrien-t j' lname_forename_long,11 grid_id_ct ,'grid.416153.4' grid_id,2 name_seq ,1 group_seq UNION ALL
Select 'obrien-t j',1,'grid.1002.3',1,1 UNION ALL
Select 'obrien-terence',2,'grid.1008.9',1,2 UNION ALL
Select 'obrien-terence',4,'grid.416153.4',2,2 UNION ALL
Select 'obrien-terence',1,'grid.484852.7',3,2 UNION ALL
Select 'obrien-terence j',14,'grid.1002.3',1,3 UNION ALL
Select 'obrien-terence j',25,'grid.1008.9',2,3 UNION ALL
Select 'obrien-terence j',3,'grid.1019.9',3,3 UNION ALL
Select 'obrien-terence j',9,'grid.1623.6',4,3 UNION ALL
Select 'obrien-terence j',40,'grid.237081.f',5,3 UNION ALL
Select 'obrien-terence j',1,'grid.267362.4',6,3 UNION ALL
Select 'obrien-terence j',2,'grid.414094.c',7,3 UNION ALL
Select 'obrien-terence j',1,'grid.416060.5',8,3 UNION ALL
Select 'obrien-terence j',36,'grid.416153.4',9,3 UNION ALL
Select 'obrien-terence j',4,'grid.453219.8',10,3 UNION ALL
Select 'obrien-terence j',3,'grid.454055.5',11,3 UNION ALL
Select 'obrien-terence j',6,'grid.474069.8',12,3 UNION ALL
Select 'obrien-terence j',13,'grid.481253.9',13,3 UNION ALL
Select 'obrien-terence john',1,'grid.1002.3',1,4 UNION ALL
Select 'obrien-terence john',1,'grid.1008.9',2,4 UNION ALL
Select 'obrien-terence john',1,'grid.1623.6',3,4 UNION ALL
Select 'obrien-terence john',1,'grid.237081.f',4,4 UNION ALL
Select 'obrien-terence john',2,'grid.416153.4',5,4 UNION ALL
Select 'obrien-terrence',2,'grid.416153.4',1,5 UNION ALL
Select 'obrien-terrence j',1,'grid.416153.4',1,6 UNION ALL
Select 'obrien-terry',1,'grid.137628.9',1,7 UNION ALL
Select 'obrien-terry',2,'grid.237081.f',2,7 UNION ALL
Select 'obrien-terry',1,'grid.267362.4',3,7 UNION ALL
Select 'obrien-timothy',1,'grid.496867.2',1,8 UNION ALL
Select 'obrien-timothy',3,'grid.6142.1',2,8
)
select * from t1;
lname_forename_long | grid_id_ct | grid_id | name_seq | group_seq |
---|---|---|---|---|
obrien-t j | 1 | grid.1002.3 | 1 | 1 |
obrien-t j | 11 | grid.416153.4 | 2 | 1 |
obrien-terence | 2 | grid.1008.9 | 1 | 2 |
obrien-terence | 4 | grid.416153.4 | 2 | 2 |
obrien-terence | 1 | grid.484852.7 | 3 | 2 |
obrien-terence j | 14 | grid.1002.3 | 1 | 3 |
obrien-terence j | 25 | grid.1008.9 | 2 | 3 |
obrien-terence j | 3 | grid.1019.9 | 3 | 3 |
obrien-terence j | 9 | grid.1623.6 | 4 | 3 |
obrien-terence j | 40 | grid.237081.f | 5 | 3 |
obrien-terence j | 1 | grid.267362.4 | 6 | 3 |
obrien-terence j | 2 | grid.414094.c | 7 | 3 |
obrien-terence j | 1 | grid.416060.5 | 8 | 3 |
obrien-terence j | 36 | grid.416153.4 | 9 | 3 |
obrien-terence j | 4 | grid.453219.8 | 10 | 3 |
obrien-terence j | 3 | grid.454055.5 | 11 | 3 |
obrien-terence j | 6 | grid.474069.8 | 12 | 3 |
obrien-terence j | 13 | grid.481253.9 | 13 | 3 |
obrien-terence john | 1 | grid.1002.3 | 1 | 4 |
obrien-terence john | 1 | grid.1008.9 | 2 | 4 |
obrien-terence john | 1 | grid.1623.6 | 3 | 4 |
obrien-terence john | 1 | grid.237081.f | 4 | 4 |
obrien-terence john | 2 | grid.416153.4 | 5 | 4 |
obrien-terrence | 2 | grid.416153.4 | 1 | 5 |
obrien-terrence j | 1 | grid.416153.4 | 1 | 6 |
obrien-terry | 1 | grid.137628.9 | 1 | 7 |
obrien-terry | 2 | grid.237081.f | 2 | 7 |
obrien-terry | 1 | grid.267362.4 | 3 | 7 |
obrien-timothy | 1 | grid.496867.2 | 1 | 8 |
obrien-timothy | 3 | grid.6142.1 | 2 | 8 |
最终结果 enter image description here 愿望结果
颜色代表不同 group_seq 之间的 link。可能还有比我展示的更多的东西。 Group_seq 7 (o'brien-terry) 可以 linked 到 3 (o'brien-terence j) 如果我可以 link 这 2 那么我可以 link o 'brien-terry 到 1,2,3,4,5,6.
理想情况下,布尔标志 true 或 false 将有助于显示所有 group_seq 是 linked 和那些不是。 在此示例中,o'brien-timothy 将为 FALSE,所有其他将为 TRUE。
提前致谢。 它必须是 BQ 解决方案,最好不要创建函数或存储过程。
grid_id grid.416153.4 与 group_se 1,2,3,4,5,6
通用lname_forename_long | grid_id_ct | grid_id | name_seq | group_seq | links |
---|---|---|---|---|---|
obrien-t j | 1 | grid.1002.3 | 1 | 1 | |
obrien-t j | 11 | grid.416153.4 | 2 | 1 | 1,2,3,4,5,6 |
obrien-terence | 2 | grid.1008.9 | 1 | 2 | |
obrien-terence | 4 | grid.416153.4 | 2 | 2 | 1,2,3,4,5,6 |
obrien-terence | 1 | grid.484852.7 | 3 | 2 | |
obrien-terence j | 14 | grid.1002.3 | 1 | 3 | 3,7 |
obrien-terence j | 25 | grid.1008.9 | 2 | 3 | |
obrien-terence j | 3 | grid.1019.9 | 3 | 3 | |
obrien-terence j | 9 | grid.1623.6 | 4 | 3 | |
obrien-terence j | 40 | grid.237081.f | 5 | 3 | |
obrien-terence j | 1 | grid.267362.4 | 6 | 3 | |
obrien-terence j | 2 | grid.414094.c | 7 | 3 | |
obrien-terence j | 1 | grid.416060.5 | 8 | 3 | |
obrien-terence j | 36 | grid.416153.4 | 9 | 3 | 1,2,3,4,5,6 |
obrien-terence j | 4 | grid.453219.8 | 10 | 3 | |
obrien-terence j | 3 | grid.454055.5 | 11 | 3 | |
obrien-terence j | 6 | grid.474069.8 | 12 | 3 | |
obrien-terence j | 13 | grid.481253.9 | 13 | 3 | 3,4 |
obrien-terence john | 1 | grid.1002.3 | 1 | 4 | |
obrien-terence john | 1 | grid.1008.9 | 2 | 4 | |
obrien-terence john | 1 | grid.1623.6 | 3 | 4 | |
obrien-terence john | 1 | grid.237081.f | 4 | 4 | 3,4 |
obrien-terence john | 2 | grid.416153.4 | 5 | 4 | 1,2,3,4,5,6 |
obrien-terrence | 2 | grid.416153.4 | 1 | 5 | 1,2,3,4,5,6 |
obrien-terrence j | 1 | grid.416153.4 | 1 | 6 | 1,2,3,4,5,6 |
obrien-terry | 1 | grid.137628.9 | 1 | 7 | |
obrien-terry | 2 | grid.237081.f | 2 | 7 | 3,7 |
obrien-terry | 1 | grid.267362.4 | 3 | 7 | |
obrien-timothy | 1 | grid.496867.2 | 1 | 8 | |
obrien-timothy | 3 | grid.6142.1 | 2 | 8 |
考虑以下方法
select *, if(count(*) over win > 1, string_agg('' || group_seq) over win, '') links
from t1
window win as (partition by grid_id)
如果应用于您问题中的示例数据 - 输出为