You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Hive中按唯一ID聚合获取sleep列的最小与最大值

解决Hive中每个唯一ID仅展示一行最小/最大Sleep值的问题

我来帮你搞定这个问题~你当前的查询之所以会出现同一个ID对应多条记录的情况,核心原因是你同时按title和id进行分组了——如果同一个ID关联了不同的title,Hive就会把每一组(title, id)当成独立的聚合单元,自然输出多行结果。

要实现每个唯一ID仅展示一行(包含该ID的最小/最大sleep值),你需要调整分组逻辑,只按id聚合即可,下面分两种场景给出解决方案:

场景1:不需要展示title,或同一ID的title完全一致

直接修改查询,去掉title的分组和查询(如果不需要展示),或者保留但确保同一ID的title唯一:

select id, min(sleep) as min_sleep, max(sleep) as max_sleep 
from myTable 
group by id;

场景2:同一ID有不同title,需要保留title信息

如果同一个ID对应多个不同的title,你可以用Hive的聚合函数来处理title,比如:

  • 取该ID对应的第一个title(使用first_value):
select 
    id,
    first_value(title) over (partition by id) as title,
    min(sleep) as min_sleep,
    max(sleep) as max_sleep
from myTable
group by id;
  • 把该ID所有不同的title收集成一个集合(使用collect_set):
select 
    id,
    collect_set(title) as associated_titles,
    min(sleep) as min_sleep,
    max(sleep) as max_sleep
from myTable
group by id;

简单总结下:你的核心需求是按id做聚合,所以把group by子句里的title去掉,就能让每个ID只输出一行结果啦~

内容的提问来源于stack exchange,提问作者jumpman8947

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:17:53