蜂巢中每行的百分比计算

时间:2013-09-18 08:02:57

标签: hive percentage

我在hive中有一个表格,其中包含以下架构 (diference int,count_value int) 价值观是 5 2 2, 30 1 1, 90 1 1, 100 1

现在我想找到count_value总和的每个count_value的百分比。像每行的count_value / sum(count_value)。任何人都可以帮忙。提前致谢

2 个答案:

答案 0 :(得分:2)

如何使用子查询首先计算总数,然后将总数加到每一行?

SELECT
    count_value / count_value_sum AS p
FROM
    myTable t
JOIN
    (SELECT SUM(count_value) AS count_value_sum FROM myTable) s

希望有所帮助。

答案 1 :(得分:2)

使用Hive 0.11中引入的新分析和窗口函数,您可以执行以下操作:

SELECT count_value / sum(count_value) over () as p from myTable

这可以避免连接,如果由另一个字段分区,则更容易进行计算。例如,如果源表具有key字段,并且您希望计算使用具有相同key的行中的总和,则可以执行以下操作:

SELECT count_value / sum(count_value) over (partition by key) as p from myTable