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 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.