【问题标题】:Hive: group by calculated columnHive:按计算列分组
【发布时间】:2020-12-22 20:48:13
【问题描述】:

我需要像这样执行查询

select 
myUsualField, SOME_FUNCTION(myAnotherField) as myUnusualField 
from MYTABLE
group by 
myUsualField, myUnusualField 

在 Hive 中,此查询失败:在表的其他字段中找不到字段 myUnusualField。

这是否意味着为了按 Hive 中的任何计算列进行分组,我必须使用子查询?

select * from (
    select 
    myUsualField, SOME_FUNCTION(myAnotherField) as myUnusualField 
    from MYTABLE
) sourceTable
    group by 
    myUsualField, myUnusualField 

?

【问题讨论】:

    标签: sql group-by hive


    【解决方案1】:

    尝试重复表达式:

    select myUsualField, SOME_FUNCTION(myAnotherField) as myUnusualField 
    from MYTABLE
    group by myUsualField, SOME_FUNCTION(myAnotherField) ; 
    

    【讨论】:

    • 是的,这行得通。但是,如果我有几个计算列,其中一些具有非常长且复杂的表达式(例如 case when) - 这将使我的查询非常难看..
    • @MiamiBeach 。 . .然后使用子查询或 CTE。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2018-11-09
    • 2015-03-06
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多