当前位置: 首页 > 工具软件 > TableSum > 使用案例 >

Hive - Count && Sum 使用与性能对比

吕衡
2023-12-01

一.引言

使用 hive 计数时常使用 Count 和 Sum 两个函数进行统计,下面看看二者的使用方法。

二.Count

count 方法可以统计有效行数

1.统计所有行数

select count(*) from table

2.统计不为null的行数

select count(col) from table

3.配合 case distinct 使用

上一篇文章使用 Hive 统计 UV,PV 中介绍了相关的使用:

A.distinct

对 uid 去重得到 uv

select count(distinct click.uid) as send_uv from table

B.case

统计点击 click=1 的样本

select count(case when label='1' then click.uid else NULL end) from table

C.distinct + case

通过 count 不统计 null 和 distinct + case 实现 uv 的统计

select count(distinct case when label='1' then click.uid else NULL end) as click_uv from table

三.sum

sum 求和函数可以将某列的值进行累加,同样对 null 值进行忽略

1.统计所有行数

sum(1) 时和 count(1) 或者 count(*) 方法效果相同

select sum(1) from table

2.对某列值进行累加

select sum(cost) from table

3.case when

select sum(case when cost == 'none' then 0 else 100 end) from table

四.Sum vs Count

统计总数时经常使用 count(1),count(*),sum(1) ,下面看看他们的效率如何:

单位: secondscount(*)count(1)sum(1)
第一次83.86978.072.455
第二次80.97377.21260.013
第三次70.16964.18767.498

整体效率看是 sum(1) 略快于 count(1),count(*) 最慢。

 类似资料: