COUNT(DISTINCT) 和 COUNT(*) + GROUP BY 给出不同的结果
Posted
技术标签:
【中文标题】COUNT(DISTINCT) 和 COUNT(*) + GROUP BY 给出不同的结果【英文标题】:COUNT(DISTINCT) and COUNT(*) + GROUP BY give different results 【发布时间】:2016-03-09 15:57:18 【问题描述】:我们正在查询其中一个数据集以获取唯一 ID
SELECT count(distinct id) FROM [MyTable] LIMIT 1
另一个查询运行了类似的命令
SELECT count(*) From ( select id FROM MyTable group by id) A ;
第一个命令效率更高,但输出应该相同。然而,他们得到了不同的结果。第一个查询返回的结果多出大约 1.5% 的数据集,超过 1 亿行。
【问题讨论】:
【参考方案1】:COUNT(DISTINCT field)
只是一个估计值。如果您需要准确的结果,您可以使用EXACT_COUNT_DISTINCT(field)
。
这在查询参考中有解释:https://cloud.google.com/bigquery/query-reference?hl=en#countdistinct
【讨论】:
【参考方案2】:查看COUNT([DISTINCT] field [, n])定义
It is a statistical approximation and is not guaranteed to be exact.
第二个查询返回精确计数,因此差异
【讨论】:
以上是关于COUNT(DISTINCT) 和 COUNT(*) + GROUP BY 给出不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
countDistinct 和 distinct.count 的区别
Laravel Eloquent - distinct() 和 count() 不能一起正常工作