SQL - поиск идентичных данных в наборе данных путем объединения в самой таблице - PullRequest
0 голосов
/ 19 июня 2019

Я пытался написать 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 в основном имеют тип записи.

Если в столбце 1 есть имя, которое не принадлежит столбцу 2, то я хочу сообщить об этом.

Таким образом, мой результат должен выглядеть примерно так:

User_info   Count
userId1     0
userId2     0
userId3     2

userId1 имеет столбца и Кати в столбце 2, и, следовательно, счетчик будет 0

userId2 имеет столбца в столбце2 и, следовательно,количество будет 0

userId3 не имеет jessica или matt в column2 и, следовательно, число будет 2

Любые идентификаторы, как я могу решить эту проблему, я, к сожалению, рисую пробелВот.Спасибо

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Ниже для BigQuery Standard 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    
0 голосов
/ 19 июня 2019

Я бы разделил каждую запись отдельно, чем сделал бы разность наборов, затем агрегировал бы:

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 




Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...