BigQuery - 如何查找列中多个类别重叠的唯一 ID?
BiqQuery - How to find unique ids overlapping for multiple categories in a column?
我对 BigQuery 和标准 SQL 还很陌生。我可能无法找出解决问题的正确方法。请帮帮我。
我有一个国家列和一个 ID 列。示例如下:
国家 | ID
美国 | id_1
美国 | id_2
美国 | id_1
英国 | id_1
英国 | id_1
英国 | id_2
英国 | id_3
澳大利亚 | id_3
澳大利亚 | id_4
澳大利亚 | id_2
我想要一个结果列,例如:
输出 1: 所有国家/地区的唯一重叠 ID 值
国家/地区 | Unique_overlapping_ids
美国 | 2
英国 | 3
澳大利亚 | 2
输出 2: 所有国家/地区的唯一非重叠 ID 值
国家/地区 | 非_Unique_overlapping_ids
美国 | 0
英国 | 0
澳大利亚 | 1
我有 88 个不同的国家和超过 500 万个唯一 ID
请帮助我。
感谢您的时间和耐心。
以下适用于 BigQuery 标准 SQL
#standardSQL
select country,
count(distinct if(shared, id, null)) as Unique_overlapping_ids,
count(distinct if(shared, null, id)) as Unique_non_overlapping_ids
from `project.dataset.table`
join (
select id, count(distinct country) > 1 shared
from `project.dataset.table`
group by id
) using(id)
group by country
如果应用于您问题中的示例数据 - 输出为
我对 BigQuery 和标准 SQL 还很陌生。我可能无法找出解决问题的正确方法。请帮帮我。
我有一个国家列和一个 ID 列。示例如下:
国家 | ID
美国 | id_1
美国 | id_2
美国 | id_1
英国 | id_1
英国 | id_1
英国 | id_2
英国 | id_3
澳大利亚 | id_3
澳大利亚 | id_4
澳大利亚 | id_2
我想要一个结果列,例如:
输出 1: 所有国家/地区的唯一重叠 ID 值
国家/地区 | Unique_overlapping_ids
美国 | 2
英国 | 3
澳大利亚 | 2
输出 2: 所有国家/地区的唯一非重叠 ID 值
国家/地区 | 非_Unique_overlapping_ids
美国 | 0
英国 | 0
澳大利亚 | 1
我有 88 个不同的国家和超过 500 万个唯一 ID
请帮助我。 感谢您的时间和耐心。
以下适用于 BigQuery 标准 SQL
#standardSQL
select country,
count(distinct if(shared, id, null)) as Unique_overlapping_ids,
count(distinct if(shared, null, id)) as Unique_non_overlapping_ids
from `project.dataset.table`
join (
select id, count(distinct country) > 1 shared
from `project.dataset.table`
group by id
) using(id)
group by country
如果应用于您问题中的示例数据 - 输出为