我一直在努力解决Hive SQL中的问题,并且发现了问题所在:
select distinct 'A', NULL;
返回' A',NULL
select count(distinct 'A', NULL);
返回0
select count(distinct 'A', coalesce(NULL,''));
返回1.
我正在使用较大查询中的选择行并对结果进行过滤(= 1)。结果是0,我丢失了很多行。
为什么带有NULL列的行不会对计数(不同)查询的结果产生影响?
答案 0 :(得分:5)
这是hive中count
的界面:
count(*)
统计所有行
count(col1)
计算col1不为空的所有行
count(distinct col1,col2...)
计算指定列不为空的所有不同行
作为特定问题的解决方案,您可以尝试使用逻辑嵌套查询并在外部查询中使用count(*)
:
select count(*) from (select distinct 'A', NULL) a;
返回1