Count(Distinct(*)) 是否返回表中不同的记录数?

问题描述 投票:0回答:1

以下代码有什么区别。

Select count(distinct(*)) from TableName;

Select count(*) from (Select distinct(*) from TableName;

我正在 azure Databricks 上运行此代码,并在执行这两个代码后获得不同的值。我不知道为什么会发生这种情况。任何帮助将不胜感激。

sql apache-spark-sql count distinct
1个回答
0
投票

Databricks 文档在

count(distinct *)
上不清楚。但似乎
count(distinct *)
删除空值,然后计算行数,而
count(*)
计算所有行。 https://docs.databricks.com/en/sql/language-manual/functions/count.html

如果指定 * 也会对包含 NULL 值的行进行计数。

如果指定了 expr,则仅计算所有 expr 不为 NULL 的行。

如果 DISTINCT 重复行不计算在内。

因此,在第一个查询中,它会跳过空值,而在第二个查询中,它会计算每一行

© www.soinside.com 2019 - 2024. All rights reserved.