Google BigQuery 从表中删除重复的边

问题描述 投票:0回答:1

我有一张表格如下:

A 栏 B 栏 重量
A B 2
B A 2
C D 4
D C 4
A D 2
A G 2

这些代表无向网络。由于网络是无向的,因此第 1 行和第 2 行相同。还有第 3 行和第 4 行。

我如何查询该表以获得以下结果:

A 栏 B 栏 重量
A B 2
C D 4
A D 2
A G 2

我尝试了很多查询,但找不到有用的查询。

google-bigquery
1个回答
0
投票

根据你的故事,怎么样:

create table stackoverflow.table1 (
  columnA STRING,
  columnB STRING,
  weight INTEGER
);

INSERT INTO stackoverflow.table1 VALUES
("A", "B", 2),
("B", "A", 2),
("C", "D", 4),
("D", "C", 4),
("A", "D", 2),
("A", "G", 2);

with temp as (
  select *, ROW_NUMBER() OVER (PARTITION BY
    IF(columnA < columnB,
      columnA || ":" || columnB,
      columnB || ":" || columnA)
    ) as rn from stackoverflow.table1 
)
select * except(rn) from temp where rn = 1

© www.soinside.com 2019 - 2024. All rights reserved.