分组时结果总和不一致

sum of results inconsistent when grouping by

我运行以下查询来查找我的表中的重复项数

SELECT
sum(duplicates)
FROM
  (SELECT
  COUNT (*) as duplicates
  FROM
  db.4585_20150727,
  db.5691_20150727,
  db.9884263_20150727,
  db.9884623_20150727 
  WHERE
  (A LIKE "1" OR A LIKE "2" OR A LIKE "3") AND
  B NOT LIKE "XYZ" AND ID IS NOT null 
GROUP EACH BY
ID
having
count (*) >1)

我想看看什么类型的单位在复制,在哪里复制。 field_1 是单元类型,field_2 是单元位置。一个单元类型可以在多个位置,一个位置可以有多个单元类型。我想查看每个单位类型、单位位置的重复数,而不是仅仅查看重复项的总数。

当我运行下面的时候,我的结果数与第一个查询的输出不一致。我几乎可以肯定,不一致是由于 group by 造成的。分组依据是否有可能过滤掉一些行?重复总和不应该与第一个查询相同吗?下面的查询结果小于上面的初始重复项总和查询的结果。唯一的区别是我在选择和分组依据中包括 field_1 和 field_2。

SELECT
field_1,
field_2,
sum(duplicates)
FROM
  (SELECT
  field_1,
  field_2,
  COUNT (*) as duplicates
  FROM
  db.4585_20150727,
  db.5691_20150727,
  db.9884263_20150727,
  db.9884623_20150727 
  WHERE
  (A LIKE "1" OR A LIKE "2" OR A LIKE "3") AND
  B NOT LIKE "XYZ" AND ID IS NOT null 
GROUP EACH BY
field_1,
field_2,
ID
having
count (*) >1)
group each by
field_1,
field_2

请让我知道我需要如何调整第二个查询以与我的初始查询结果一致。

谢谢!

我的猜测:你是 运行 一个 "HAVING COUNT()>1"。当第一个查询运行时,它会过滤一些元素。当第二个查询运行时,由于它具有更多限制性组,更多行落入 COUNT()=1 存储桶,因此它们被过滤。

SELECT SUM(duplicates)
FROM (
  SELECT COUNT(*) as duplicates
  FROM [publicdata:samples.shakespeare] 
  GROUP EACH BY word
  HAVING COUNT(*)>1
)

149130

SELECT SUM(duplicates)
FROM (
  SELECT COUNT(*) as duplicates
  FROM [publicdata:samples.shakespeare] 
  GROUP EACH BY word, word_count
  HAVING COUNT(*)>1
)

130619