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

时间:2017-08-09 13:44:06

标签: sql count hive null distinct

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

select distinct 'A', NULL;        

返回' A',NULL

select count(distinct 'A', NULL);  

返回0

select count(distinct 'A', coalesce(NULL,''));  

返回1.

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

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

1 个答案:

答案 0 :(得分:5)

这是hive中count的界面:

count(*)统计所有行

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

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

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

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