impala 同时使用group by 和 聚合函数

当在SQL查询中同时使用groupby和聚合函数如percent_rank时,需确保groupby包含聚合函数涉及的字段。文章作者通过举例说明,如果在groupby中遗漏了days_cnt字段,会导致错误。添加days_cnt到groupby子句后,问题得到解决。此经验分享可帮助遇到类似问题的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同时使用group by 和集合函数时,遇到

select list expression not produced by aggregation output (missing from GROUP BY clause?): 

我的sql如下:

select user_id,percent_rank() over(order by days_cnt asc) from (
    select user_id,day_cnts
    from table_name where dt_ymd between '20230101' and '20230228' 
    ) a  
where days_cnt is not null 
group by user_id

在多次和度娘沟通无果的情况下,濒临崩溃,后经多次尝试【抹了一把辛酸泪】,终于找到问题了

select user_id,days_cntpercent_rank() over(order by days_cnt asc) from (
    select user_id,day_cnts
    from table_name where dt_ymd between '20230101' and '20230228' 
    ) a  
where days_cnt is not null 
group by user_id,days_cnt

原因是,如果groupby 和聚合函数同时使用,那么groupby后边的字段必须包含聚合函数里用到的字段。扶额~

记录一下,给同样走投无路的小伙伴一点点帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值