我运行以下查询以查找表格中重复的数量
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
请告诉我如何调整第二个查询以与初始查询的结果保持一致。
谢谢!
答案 0 :(得分:3)
我的猜测:您正在运行“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
VS
SELECT SUM(duplicates)
FROM (
SELECT COUNT(*) as duplicates
FROM [publicdata:samples.shakespeare]
GROUP EACH BY word, word_count
HAVING COUNT(*)>1
)
130619