首页 > 解决方案 > SQL - 通过加入表本身在数据集中查找相同的数据

问题描述

我试图编写一个 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 基本上是记录类型。

如果 column1 中有一个不属于 column2 的名称,那么我基本上想报告它。

所以我的结果应该看起来像

User_info   Count
userId1     0
userId2     0
userId3     2

userId1 在 column2 中有 pete 和 katie,因此计数将为 0

userId2 在 column2 中有 pete,因此计数将为 0

userId3 在 column2 中没有 jessica 或 matt,因此计数将为 2

关于如何解决这个问题的任何想法,不幸的是我在这里画了一个空白。谢谢

标签: sqlgoogle-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT User_info, 
  (SELECT COUNT(1) FROM UNNEST(column1) value 
    WHERE NOT value IN (SELECT value FROM UNNEST(column2) value)
  ) Missing_count
FROM `project.dataset.table`   

如果适用于您的问题的样本数据 - 结果是

Row User_info   Missing_count    
1   userId1     0    
2   userId2     0    
3   userId3     2    

推荐阅读