以下代码有什么区别。
Select count(distinct(*)) from TableName;
Select count(*) from (Select distinct(*) from TableName;
我正在 azure Databricks 上运行此代码,并在执行这两个代码后获得不同的值。我不知道为什么会发生这种情况。任何帮助将不胜感激。
Databricks 文档在
count(distinct *)
上不清楚。但似乎 count(distinct *)
删除空值,然后计算行数,而 count(*)
计算所有行。 https://docs.databricks.com/en/sql/language-manual/functions/count.html
如果指定 * 也会对包含 NULL 值的行进行计数。
如果指定了 expr,则仅计算所有 expr 不为 NULL 的行。
如果 DISTINCT 重复行不计算在内。
因此,在第一个查询中,它会跳过空值,而在第二个查询中,它会计算每一行