我试图编写一个SQL查询来查找以下内容-
User_info column1 column2
userId1 pete katie
katie pete
john
userId2 pete katie
miles
jessica
pete
userId3 jessica pete
matt katie
john
因此,假设我的数据在SQL中以以下方式构造,其中column1和column2基本上是record类型的。
如果column1中有一个不属于column2的名称,那么我基本上想报告一下。
所以我的结果应该类似于
User_info Count
userId1 0
userId2 0
userId3 2
userId1在列2中存在pete和katie,因此计数为0
userId2在列2中具有pete,因此计数将为0
userId3在column2中没有杰西卡或马特,因此计数将为2
任何人都对如何解决此问题持怀疑态度,很遗憾,我在这里画了一个空白。谢谢
答案 0 :(得分:1)
以下是用于BigQuery标准SQL
export class FooMap extends Map{
constructor(otherMap : Map<number,Foo>){
super(otherMap);
}
}
如果要应用于您的问题的样本数据-结果为
super()
答案 1 :(得分:0)
我会分别取消每条记录的嵌套,而不是设置差异,然后进行聚合:
with rec1 as (
select userid, x
from tbl
cross join unnest(tbl.column1) as x
),
rec2 as (
select userid, x
from tbl
cross join unnest(tbl.column2) as x
),
diff as (
select * from rec1
except
select * from rec2
)
select userid, count(1)
from diff
group by userid
order by userid