1

我在 hive 中有一个表,具有以下模式(差异 int,count_value int)值是 5 2、30 1、90 1、100 1

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

4

2 回答 2

4

使用 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
于 2013-09-20T14:55:15.143 回答
3

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

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

希望有帮助。

于 2013-09-19T10:16:26.490 回答