为啥在 hive 中执行 group by 时出现错误?

Posted

技术标签:

【中文标题】为啥在 hive 中执行 group by 时出现错误?【英文标题】:Why I am getting error while performing group by in hive?为什么在 hive 中执行 group by 时出现错误? 【发布时间】:2019-12-04 07:46:36 【问题描述】:

我正在 hive 中执行以下命令:

Select child.data_volume_gprs_dl + child.data_volume_gprs_ul as data_usage,
       parent.file_name,
       parent.record_number
  from table1 as parent
  left join table2 child
    on parent.file_name = child.file_name
   and parent.record_number = child.record_number
 where parent.served_imsi like '310120%'
    or parent.served_imsi like '312530%'
   and parent.serving_node_plmn_id like '310260%'
   and parent.date_part = 20191201
 group by parent.file_name, parent.record_number

错误:编译语句时出错:FAILED: SemanticException [错误 10025]:第 1:7 行表达式不在 GROUP BY 键中 'data_volume_gprs_dl'(状态=42000,代码=10025)

为什么会出现这个错误?

【问题讨论】:

请提供样本数据和期望的结果。显然,您的查询不是有效的 SQL,因此它不能很好地描述结果集。 【参考方案1】:

所有非聚合列都应在GROUP BY 列表中,例如

 group by parent.file_name, parent.record_number,
          child.data_volume_gprs_dl, child.data_volume_gprs_ul

如果您只需要按parent.file_nameparent.record_number 列进行分组,则可以对其余列应用聚合(sum()avg()count())函数。甚至可能添加sum(child.data_volume_gprs_dl + child.data_volume_gprs_ul)

【讨论】:

但我的要求是按 parent.file_name、parent.record_number 分组。有没有其他方法可以解决这个问题。

以上是关于为啥在 hive 中执行 group by 时出现错误?的主要内容,如果未能解决你的问题,请参考以下文章

执行SQL时出现: ORDER BY clause is not in GROUP BY clause and contains nonaggregated c

为啥在创建表时出现“需要 Hive 支持”错误?

使用 group_by 和 summarise 时出现重复行

r - 使用 group_by 和 mutate 根据多个条件添加新列时出现意外的“=”

Hive之GROUP BY详解

hive高阶1--sql和hive语句执行顺序explain查看执行计划group by生成MR