如何从表中添加一个count(*)列?

时间:2017-12-06 03:59:13

标签: hive hiveql

我的表只包含两列:session_id, word_id,表格为session_word

我们可以获得两个值作为下面的sql查询:

select count(*) as sum_word_freq from session_word
select count(distinct session_id) as sum_session_freq from session_word

我已经建立了一个表格

select word_id, count(*) as word_freq , count(distinct session_id) as word_session_freq
    from session_word
    group by word_id

但我希望将结果包含在另外两列中:sum_word_freqsum_session_freq。 如何在完整的SQL查询中实现它。

1 个答案:

答案 0 :(得分:1)

如果您希望在单个查询中按不同组进行聚合,那么使用分析函数就是解决方案:

select
        word_id, 
        word_freq, 
        word_session_freq,
        --the sum for all dataset
        sum(word_freq)         over() as sum_word_freq,
        sum(word_session_freq) over() as sum_session_freq
from
(
 select word_id, 
        count(*)                   as word_freq, 
        count(distinct session_id) as word_session_freq
    from session_word
    group by word_id
)s;