首页 > 解决方案 > 有没有办法仅在 Bigquery SQL 中区分或删除在某些条件下重复的记录?

问题描述

我正在从事一个涉及酒店监管的项目,我正在使用 Bigquery SQL 来管理我的数据库。

假设我有这张桌子:

在此处输入图像描述

目标是每月对酒店进行一次监督,正如您在前两列中看到的, Location = "London"中的Hotel Name = "Hilton"被监督两次,但具有不同的 Date 值。我想要做的是添加一个名为“IS Duplicate”的新列,并根据报告类型位置列值的相似性用“重复”“不重复”值填充它,即使日期值不同。(见下表)

在此处输入图像描述

你能帮我解决这个问题吗?谢谢!

标签: google-bigquery

解决方案


您可以使用窗口函数:

select t.*,
       (case when count(*) over (partition by location, date_trunc(date, month)) > 1
             then 'Duplicate' else 'Not Duplicate'
        end) as is_duplicate
from t;

我建议删除 并将其case保留为布尔值,truefalse.


推荐阅读