将列的每个值除以表中记录的总数

时间:2019-05-01 04:01:36

标签: hive hiveql hive-query

一种能够将列的每个值除以表中记录总数的查询

我尝试了以下查询

select ( (p.rank/count(*)) * 100 ) as rankratio from RankTable p;

我看到错误,无法执行查询。 例如
总记录为5,所以(1/5)* 100 = 20

RankTable         
rank            rankratio        
1               20
2               40
3               60
4               80
5               100

1 个答案:

答案 0 :(得分:1)

使用分析count(*) over()

select ( (s.rank/s.total_count) * 100 ) as rankratio 
from
(
select rank, count(*) over() as total_count
  from RankTable p
)s
order by s.rank;