процентный расчет для каждого ряда в улье

У меня есть таблица в улье со следующей схемой (разница int, count_value int) Значения: 5 2, 30 1, 90 1, 100 1

Теперь я хочу найти процент каждого count_value с суммой count_value. Что-то вроде count_value/sum(count_value) для каждой строки. Кто-нибудь может помочь. заранее спасибо


person sunitha    schedule 18.09.2013    source источник


Ответы (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
person libjack    schedule 20.09.2013

Как насчет использования подзапроса, чтобы сначала вычислить итог, а затем присоединить итог к каждой строке?

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

Надеюсь, это поможет.

person Lukas Vermeer    schedule 19.09.2013