我在 hive 中有一个表,具有以下模式(差异 int,count_value int)值是 5 2、30 1、90 1、100 1
现在我想用 count_value 的总和找到每个 count_value 的百分比。每行都有类似 count_value/sum(count_value) 的东西。任何人都可以帮忙。提前致谢
我在 hive 中有一个表,具有以下模式(差异 int,count_value int)值是 5 2、30 1、90 1、100 1
现在我想用 count_value 的总和找到每个 count_value 的百分比。每行都有类似 count_value/sum(count_value) 的东西。任何人都可以帮忙。提前致谢
使用 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
如何使用子查询先计算总数,然后将总数连接到每一行?
SELECT
count_value / count_value_sum AS p
FROM
myTable t
JOIN
(SELECT SUM(count_value) AS count_value_sum FROM myTable) s
希望有帮助。