Hive查询 - 从每个组中获取多个字段的最大值和总和

问题描述 投票:0回答:1

我有一张表如下:

id | most_recent_run  | flag1 | flag2
---+------------------+-------+------
1  | 2017-01-01 10:40 | 0     | 1
1  | 2017-01-01 18:30 | 1     | 1 
2  | 2017-02-28 04:30 | 1     | 0

我想查询这个表,以便每个id,我得到max(most_recent_run)sum(flag1)sum(flag2)。这应该是查询结果:

id | max_most_recent_run | flag1_count | flag2_count
---+---------------------+-------------+------------
1  | 2017-01-01 18:30    | 1           | 2
2  | 2017-02-28 04:30    | 1           | 0

我尝试使用收集和排名函数的组合编写此查询,但我没有得到预期的结果。

在这方面的任何解释或方向将不胜感激。

谢谢!

sql hadoop hiveql
1个回答
0
投票

你应该使用SQL group by语句,然后使用maxsum函数,即:

select id,
    max(most_recent_run) as max_most_recent_run,
    sum(flag1) as flag1_count,
    sum(flag2) as flag2_count
from my_table
group by id
© www.soinside.com 2019 - 2024. All rights reserved.