与使用where子句相比,对表进行全部计数时,我得到的计数不正确。结果如下:
SELECT count(1) FROM Table_MAS MAS;
OK
11317322
hive> SELECT count(1) FROM Table_MAS where Col_A IS NOT NULL and Col_B is NOT NULL;
OK
552589106
我已经进行了表格分析和维修。看起来好像有什么问题。
想看看是否有人遇到过类似的情况,如果是这样,您如何纠正呢?
我已经进行了表格分析和维修。
很明显,我希望where子句的计数始终等于或小于完整计数。
答案 0 :(得分:1)
您应该使用:
select count(*) FROM Table_MAS MAS;
COUNT(*)将计算行数,而COUNT(1)将计算表达式中的非空值,而COUNT(column)将计算列中的所有非空值。