次のスキーマを持つハイブにテーブルがあります (差分 int、count_value int) 値は 5 2、30 1、90 1、100 1 です
ここで、count_value の合計で各 count_value のパーセンテージを見つけたいと思います。各行の count_value/sum(count_value) のようなもの。誰でも助けてください。前もって感謝します
次のスキーマを持つハイブにテーブルがあります (差分 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
それが役立つことを願っています。