Google bigquery 是否有办法区分或删除仅在Bigquery SQL中在某些情况下重复的记录?

Google bigquery 是否有办法区分或删除仅在Bigquery SQL中在某些情况下重复的记录?,google-bigquery,Google Bigquery,我在做一个涉及酒店管理的项目,我正在使用BigQuerySQL来管理我的数据库 假设我有这张桌子: 我们的目标是,一家酒店应该每月监督一次,正如您在前两列中看到的,酒店名称=希尔顿所在地=伦敦被监督两次,但日期值不同。我想做的是添加一个名为is Duplicate的新列,并根据报告类型和位置列值的相似性(即使日期值不同)使用重复值或不重复值填充它。见下表 你能帮我解决这个问题吗?谢谢 您可以使用窗口功能: select t.*, (case when count(*) over (

我在做一个涉及酒店管理的项目,我正在使用BigQuerySQL来管理我的数据库

假设我有这张桌子:

我们的目标是,一家酒店应该每月监督一次,正如您在前两列中看到的,酒店名称=希尔顿所在地=伦敦被监督两次,但日期值不同。我想做的是添加一个名为is Duplicate的新列,并根据报告类型和位置列值的相似性(即使日期值不同)使用重复值或不重复值填充它。见下表


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

您可以使用窗口功能:

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;

我建议删除该大小写,并将其保留为布尔值,true或false。

mysql!=谷歌bigquery。请仅保留相关标记。在MySQL 8.0中,您可以使用COUNT over Report Type、Location并标记值大于1的行。其他数据库也有窗口和排名功能。MySQL虽然只是为了清晰起见才在V8.0中添加了它们,但用于确定重复项的字段是报告类型、位置和酒店名称,对吗?@LaurentS。是的,没错。不需要年份部分吗?嗨,戈登,谢谢你的回答,但是如果日期列是一个字符串而不是日期呢?@Harun。然后将其转换为日期或使用字符串操作来标识月份。不过,您应该修复数据,使日期不会存储为字符串。BigQuery对日期/时间数据有很多支持,您应该充分利用这一点。