13

HIVE でテーブルを作成します。次の列があります。

id bigint, rank bigint, date string

月ごとの平均(ランク)を取得したい。このコマンドを使用できます。できます。

select a.lens_id, avg(a.rank)
from tableA a
group by a.lens_id, year(a.date_saved), month(a.date_saved); 

ただし、日付情報も取得したい。私はこのコマンドを使用します:

select a.lens_id, avg(a.rank), a.date_saved
from lensrank_archive a
group by a.lens_id, year(a.date_saved), month(a.date_saved);

それは不平を言う:Expression Not In Group By Key

4

3 に答える 3

16

完全なエラー メッセージはExpression Not In Group By Key [value].
は、[value]に必要な式を教えてくれますGroup By

a.date_saved2 つのクエリを見るだけで、. に明示的に追加する必要があると言えますGroup By

于 2011-04-21T17:02:24.847 に答える
12

ウォークアラウンドは、追加のフィールドをcollect_setに配置し、セットの最初の要素を返すことです。例えば

select a.lens_id, avg(a.rank), collect_set(a.date_saved)[0]
from lensrank_archive a
group by a.lens_id, year(a.date_saved), month(a.date_saved);
于 2012-05-13T22:40:03.637 に答える