count(*)和count(1):对表中行数进行统计计算,包含null值。
count(某字段):对表中该字段的行数进行统计,不包含null值。如果出现空字符串,同样会进行统计。
我们插入测试数据,这里对null值和空字符串没有作统一处理,以默认为准。
CREATE TABLE IF NOT EXISTS `test_01`(
name STRING,address STRING,gender STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
insert overwrite table test_01
select 'Lucy','shanghai','female'
union all
select 'LiLei',null,'male'
union all
select 'Rose','shenzhen','female'
union all
select 'Marry',null,''
union all
select 'Curry','beijing',''
hive> select * from test_01;
OK
Marry NULL
Lucy shanghai female
LiLei NULL male
Rose shenzhen female
Curry beijing
select count(*) from test_01;
OK
5
Time taken: 1.145 seconds, Fetched: 1 row(s)
select count(1) from test_01;
OK
5
Time taken: 1.113 seconds, Fetched: 1 row(s)
select count(address) from test_01;
OK
3
Time taken: 1.113 seconds, Fetched: 1 row(s)
select count(gender) from test_01;
OK
5
Time taken: 1.139 seconds, Fetched: 1 row(s)