2016-03-28 7 views
2

私は現在ハイブを使用しており、フィールドuser_idとvalueを持つテーブルを持っています。私は、各user_id内で値を降順に並べ替え、各user_idの上位100レコードだけを出力したいと思います。これは私が使用しようとしていますコードです:私はこのクエリを実行するとグループ内のハイブトップnレコード

DROP TABLE IF EXISTS mytable2 
CREATE TABLE mytable2 AS 
SELECT * FROM 
(SELECT *, rank (user_id) as rank 
FROM 
(SELECT * from mytable 
DISTRIBUTE BY user_id 
SORT BY user_id, value DESC)a)b 
WHERE rank<101 
ORDER BY rank; 

はしかし、私は次のエラーを取得する:

FYI
Error while compiling statement: FAILED: SemanticException [Error 10247]: Missing over clause for function : rank [ERROR_STATUS] 

- 私のユーザーIDは英数字です。

誰でも手助けできますか?

ありがとうございます。

エラーメッセージが言うように は以下の通りランク後overを追加しようと、あなたがランク機能を使用して、エラーを持って、コメント

答えて

0

を追加します。

.... 
    (SELECT *, rank (user_id) over (order by user_id) as rank 
.... 

詳細については、ランク機能を使用する方法これを参照することができますdocumentation

+0

ありがとうございます - 問題は現在ソートされています。 – Maeve90

関連する問題