簡體   English   中英

GROUP BY Apache Hive中的錯誤

[英]Error in GROUP BY Apache Hive

我有一個包含以下內容的表格評分:

userid INT
movieid INT
rating FLOAT
timestmp STRING

select movieid, ROUND(AVG(rating),1) as Rating, COUNT(userid) as rtn_crt, ROUND(((Rating*rtn_cnt)+(100*3.5))/(rtn_cnt+100),1) as w_rating
from ratings 
GROUP BY movieid 
LIMIT 50;

錯誤信息:

org.apache.hive.service.cli.HiveSQLException :編譯語句時出錯:FAILED: SemanticException [Error 10025]:第2行:6表達式不在GROUP BY鍵rtn_cnt

我嘗試使用CAST函數,但仍無法正常工作,並收到相同的錯誤

select movieid, CAST(AVG(rating) AS FLOAT) as Rating, COUNT(userid) as rtn_crt,
CAST((Rating*rtn_cnt) AS FLOAT) + CAST((100*$AVG_MEAN) AS FLOAT)
       /CAST((rtn_cnt+100) AS FLOAT) as w_rating
from ratings 
GROUP BY movieid 
LIMIT 50;

我應該建議您使用子查詢來重寫SQL查詢,如下所示:

SELECT t.*, ROUND(((t.Rating*t.rtn_cnt)+(100*3.5))/(t.rtn_cnt+100),1) as w_rating 
FROM (
    SELECT movieid, ROUND(AVG(rating), 1) as Rating, COUNT(userid) as rtn_crt
    FROM ratings 
    GROUP BY movieid 
    LIMIT 50
) t;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM