Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery/SQL-删除指定参数列中的重复项_Google Bigquery - Fatal编程技术网

Google bigquery BigQuery/SQL-删除指定参数列中的重复项

Google bigquery BigQuery/SQL-删除指定参数列中的重复项,google-bigquery,Google Bigquery,我需要删除指定参数的一列中的重复项。 需要将market_offers列中的重复项替换为null,并且只保留一个值 但有一种情况是,有不同的等级,所以我需要为每个等级和国家/地区代码留下唯一的值 BigQuerySQL 结果 country_code rank store_id category_id offers market_offers se 1 14582 1106 410 504860 se

我需要删除指定参数的一列中的重复项。

需要将market_offers列中的重复项替换为null,并且只保留一个值 但有一种情况是,有不同的等级,所以我需要为每个等级和国家/地区代码留下唯一的值 BigQuerySQL

结果

country_code    rank    store_id    category_id offers  market_offers
se              1       14582       1106        410     504860
se              1       1955        1294        2       504860
se              1       9831        1158        151     504860
se              2       666         11158       536     4000
se              2       6587        25863       6586    4000
se              2       6666        158         536     4000
se              5       65853       76722       1521    302
se              5       6587        25863       6586    302

预期结果

country_code    rank    store_id    category_id offers  market_offers
se              1       14582       1106        410     504860
se              1       1955        1294        2       null
se              1       9831        1158        151     null
se              2       666         11158       536     4000
se              2       6587        25863       6586    null
se              2       6666        158         536     null
se              5       65853       76722       1521    302
se              5       6587        25863       6586    null

下面考虑一下

select * except(market_offers), 
  if(
    row_number() over(partition by market_offers, rank) = 1, 
    market_offers, 
    null
  ) as market_offers
from `project.dataset.table`  
如果应用于问题中的样本数据,则输出为


你能粘贴一个输入数据和所需输出的示例吗?你不能对所需的列使用DISTINCT吗感谢效果很好:)还有一件事……当我试图将此结果提交给DataStudio时,我遇到了另一个问题,那么,这是否可能以另一种方式实现它。。。我在考虑按参赛人数划分全国唯一排名的数字?所以从上面的数据来看,排名5应该是151,排名2-1333等等…当然。你原来的问题已经完全回答了。请发布新问题和所有相关细节,我将很乐意提供帮助:o)这是新帖子:)谢谢你的帮助:)
select * except(market_offers), 
  if(
    row_number() over(partition by market_offers, rank) = 1, 
    market_offers, 
    null
  ) as market_offers
from `project.dataset.table`