如何计数不同显示重复,但分组不?

时间:2016-03-09 22:28:16

标签: sql apache-spark-sql

我想在我的数据中查询重复项。

所以,我做的第一件事是我做一个不同的计数:

select count(distinct colA, colB ....) from Table

和一个计数:

select count(*) from Table

我看到计数明显低于计数(*) 所以,现在我想实际看到重复项,所以我这样做:

select colA, colB, .... count(*) from Table 
group by colA, colB ... having count(*) > 1;

现在,由于某种原因,这根本不会返回任何记录。这个表对我来说太大了,不能在这里显示结果,列太多了。

这两种情况怎么可能都是真的?计数是不同的,但是当我将它们分组并过滤count(*) >1

时,没有显示任何行

感谢。

1 个答案:

答案 0 :(得分:0)

您看到的行为可能取决于您使用的数据库。但是,我很确定问题是由列中的NULL值引起的。例如,MySQL明确地将COUNT(DISTINCT)描述为:

  

COUNT(DISTINCT expr,[expr...])

     

返回具有不同非NULL expr的行数   值。

并非所有数据库都支持COUNT(DISTINCT)多个表达式。不同的数据库可以不同地处理NULL值。但是,它们似乎是导致这种差异的最可能原因。