isMr_Sun 2023-02-23 20:02 采纳率: 25%
浏览 14
已结题

hive3.x的round函数

hive3.x的round函数

select si.stu_id ,round(avg(si.score),2) score_avg
from score_info si 
group by si.stu_id 
having score_avg > 60;

select si.stu_id ,avg(si.score) score_avg
from score_info si 
group by si.stu_id 
having score_avg > 60;

当加了round后就无法执行,报错:SQL 错误 [10025] [42000]: Error while compiling statement: FAILED: SemanticException [Error 10025]: Line 5:7 Expression not in GROUP BY key '60'
求解释一下为什么。

  • 写回答

2条回答 默认 最新

  • @SmartSi 博客专家认证 2023-02-28 23:30
    关注

    GROUP BY 语句通常会和聚合函数一起使用,按照一个或者多个列对结果进行分组,然后对每个组执行聚合操作。在 SELECT 子句中出现的字段,如果不是在聚合函数(比如 SUM、COUNT、AVG等)中,那就必须要放到 GROUP BY 子句中,相反没有出现在 GROUP BY 子句中的字段,只能出现在聚合函数中。Hive 不认为 ROUND 是一个聚合函数,ROUND 中使用的字段必须添加到 GROUP BY 中,否则就会抛出上面的异常信息。但是 GROUP BY 语句中是不能使用 AVG 聚合函数。所以需要嵌套子查询的方式实现。

    https://smartsi.blog.csdn.net/article/details/129272452?spm=1001.2014.3001.5502

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真