hive 運行sql報錯Expression Not In Group By Key


案例:

Select tmp.username,date,sum(tmp.su) over(partition by tmp.username order by tmp.date ) totle
    From  (
        Select username,sum(cost_money) su,date
        From table_test1
        Group by date,username
            ) tmp
    Group by tmp.date,tmp.username
    Order by tmp.username;

 

mysql運行結果:

 

 

hive提示:Semantic Exception: Line 1:24 Expression not in GROUP BY key 'su' (state=42000,code=40000)

原因:1.Hive不允許直接訪問非group by字段;

解決:
1.對於非group by字段,可以用Hive的collect_set函數收集這些字段,返回一個數組;
2.使用數字下標,可以直接訪問數組中的元素;

也可以直接將字段放入group by中:

Select tmp.username,date,sum(tmp.su) over(partition by tmp.username order by tmp.date ) totle
    From  (
        Select username,sum(cost_money) su,date
        From table_test1
        Group by date,username
            ) tmp
    Group by tmp.date,tmp.username,su
    Order by tmp.username;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM