COUNT(DISTINCT)和COUNT(*)+ GROUP BY给出不同的结果

时间:2016-03-09 15:57:19

标签: google-bigquery google-cloud-storage

我们要查询其中一个数据集以获取唯一ID

SELECT count(distinct id) FROM [MyTable] LIMIT 1

另一个查询运行了类似的命令

SELECT count(*) From  ( select id FROM MyTable group by id) A ; 

第一个命令效率更高,但输出应该相同。但是,他们得到了不同的结果。第一个查询返回的结果大约是数据集的1.5%,超过1亿行。

2 个答案:

答案 0 :(得分:4)

COUNT(DISTINCT field)只是一个估计值。如果您需要准确的结果,可以使用EXACT_COUNT_DISTINCT(field)

查询参考中解释了这一点:https://cloud.google.com/bigquery/query-reference?hl=en#countdistinct

答案 1 :(得分:2)

检查COUNT([DISTINCT] field [, n])定义

It is a statistical approximation and is not guaranteed to be exact.

第二个查询返回精确计数,因此差异