为什么带有NULL列的count(distinct)在Hive SQL中返回0?

AVS*_*AVS 2 sql null hive count distinct

我一直在努力解决Hive SQL中的问题,并且发现了问题所在:

select distinct 'A', NULL;        
Run Code Online (Sandbox Code Playgroud)

返回'A',NULL

select count(distinct 'A', NULL);  
Run Code Online (Sandbox Code Playgroud)

返回0

select count(distinct 'A', coalesce(NULL,''));  
Run Code Online (Sandbox Code Playgroud)

返回1.

我正在使用较大查询中的选择行并对结果进行过滤(= 1).结果为0,我丢失了很多行.

为什么带有NULL列的行不会对计数(不同)查询的结果产生影响?

Ale*_*bov 6

这是count蜂巢的界面:

count(*) 统计所有行

count(col1) 计算col1不为null的所有行

count(distinct col1,col2...) 计算指定列不为空的所有不同行

作为特定问题的解决方案,您可以尝试使用逻辑嵌套查询并count(*)在外部查询中使用:

select count(*) from (select distinct 'A', NULL) a; 返回1