を私は各行が販売を寄付、このテーブルを持っている:ハイブに一日あたりの上位N行を取得します - ランク()
sale_date salesman sale_item_id
20170102 JohnSmith 309
20170102 JohnSmith 292
20170103 AlexHam 93
私は一日あたりのトップ20セールスマンを取得しようとしていると私が思いつきましたこの:
SELECT sale_date, salesman, sale_count, row_num
FROM (
SELECT sale_date, salesman,
count(*) as sale_count,
rank() over (partition by sale_date order by sale_count desc) as row_num
from salesforce.sales_data
) T
WHERE sale_date between '20170101' and '20170110'
and row_num <= 20
しかし、私は得る:
FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns. Also check for circular dependencies.
Underlying error: org.apache.hadoop.hive.ql.parse.SemanticException: Line 5:35 Expression not in GROUP BY key 'sale_date'
私はグループがが有効になるだろうかの時点ではわかりません。助けてもらえますか? Tx!
ありがとう@Gordon - 私は今、同じエラーが表示されますが、 "GROUP BYキーではない式が" sales_count '"になっています。 AFAIKエイリアスはグループ句では使用できませんが、グループ句に追加して「無効なテーブルエイリアスまたはカラム参照 'sales_count'」が表示されます – Craig
ウィンドウ関数でグループを使用する必要はありません。 – hlagos
@lake 。 。 。ランキングが集計上にある場合は行います。 –