【发布时间】:2020-06-11 23:10:27
【问题描述】:
SQL BigQuery - 我在需要删除的主键上有重复的行(我不想从表中永久删除)。我必须 GROUP BY 其他几个字段来聚合结果,并且遇到问题,因为我必须包含主键但不能按它分组并同时删除重复项。
我在堆栈上看到了示例,但在应用于此案例时遇到了问题。我已经尝试了以下方法,但这并没有导致任何分组,因为我必须按 ID 分组才能将其保留在 select 语句中。
SELECT Distinct (ID),Event_ID,Event_Name,Sum(Quantity), Sum(Price*Quantity)
FROM table
GROUP BY ID, Event_ID, Event_Name
我尝试从 group by 子句中删除 ID 并添加“Min (Distinct (ID))”作为第一个选择行,但这并没有删除重复项。
我也试过了
SELECT Distinct (ID),Event_ID, Event_Name, Sum(Quantity) ,Sum(Price*Quantity),
FROM table
INNER JOIN
(SELECT ID as DeduplicatedID
FROM table
GROUP BY ID) deduplicatedtable ON table.ID = deduplicatedtable.ID
GROUP BY ID, Event_ID, Event_Name
提前致谢!
ID 级别的组,但是其中一些 ID 具有重复项,当按事件分组时提供不正确的 TotalQuantity 和 TotalRevenue 数字
我希望分组数据看起来像什么,但这是不正确的,并且在数量和 rev 字段相加时包含重复的 ID。
【问题讨论】:
-
主键——根据定义——没有重复项。请解释哪些列或哪些列不应重复。样本数据和期望的结果会有所帮助。
-
正确 - 我猜它应该是主键,但由于某种原因,某些行存在重复,我无法解析出押韵或为什么它只有一些行而不是其他行的原因...我现在正在将数据截图添加到原始帖子
-
添加了上面的图片
-
究竟复制了什么?整行还是只有 id 值?我的意思是,对于重复的 ID 值,该行的其余部分是相似的还是不同的?
标签: sql group-by google-bigquery duplicates grouping