对链接图像表示歉意 - 我无法将它们粘贴到文本正文中......
我想查找重复的“name_org1”记录 - 没有唯一的记录。我正在 Google Bigquery 中操作。
为此,我决定使用 ROW_NUMBER() 窗口函数对所有记录进行排名,并按顺序对重复项进行排名。一切似乎都有效,除了我无法过滤掉唯一的记录。换句话说,我希望我的数据集仅包含连续的排名(1,2,或 1,2,3,或 1,2,3,4 等)。
我不想要任何一对一的(即每行都有唯一的记录)。似乎无法弄清楚如何排除这些。尝试过使用 ChatGPT 但我不满意。
这是迄今为止我的查询,它产生了我正在寻找的重复项,但也包括唯一的记录:
SELECT
partner, name_org1,
ROW_NUMBER() OVER(PARTITION BY name_org1) as duplicates
FROM `gcp-gfs-datalake-core-prd.sap_p05__saphanadb__views_current.but000`
我觉得我已经用尽了我知道如何使用的大部分选项,包括使用 CTE 或聚合,但我现在不知所措。
感谢您的帮助。
看起来你需要
COUNT(*)
窗口功能
SELECT
b.partner,
b.name_org1
FROM (
SELECT *,
COUNT(*) OVER (PARTITION BY name_org1) as count
FROM `gcp-gfs-datalake-core-prd.sap_p05__saphanadb__views_current.but000` b
) b
WHERE b.count > 1;