2016-05-06 12 views
1

私はHQLをかなり使い慣れており、構文を理解しようとしています。私はplayerIDとGame Winning Goals(GWG)でテーブルを「得点」しています。私は最大のGWGを持っているplayerIDを見たいと思う。これは私のクエリです:テーブルの値をHQLのmax(column)から選択する

select playerid as ID from scoring where gwg = ('select max(scoring.gwg) from scoring'); 

ハイブは列名を表示しますが、出力が得られません。しかし、私はハードコード 'gwg = 16'、私は必要な出力を取得します。何かアドバイス?私はHortonworks 2.3.2に取り組んでいます。あなたはここでは、この

select playerid, max(scoring.gwg) from scoring group by playerid; 

は、上記の他

select playerid, max(scoring.gwg) as maxScore from scoring 
    group by playerid order by maxScore desc; 

で試すことができ

+0

サブクエリを引用符で囲んではいけません。これは文であり、文字列の値ではありません。 – carbontax

答えて

2

はすなわち、最大スコアの1が上になります降順にプレイヤーIDを与えます。

+1

ありがとう!しかし今、アンバリログインページを読み込んで、今すぐ試すことができるようになっています。一度私はそれが並べ替えを得る、間違いなくこれを行こう! – user2330778

+0

@ user2330778:問題はありません...同じヘルプをもっと必要とする場合は教えてください。 –

+0

こんにちはAbhijitさん、クエリは機能しますが、それでも最大値は得られません。私は最大値を使用して、使用しないでクエリを試しました。私はまだ同じ数のエントリを取得します。私は反復選手に関係なく、年間の最大得点を選択する必要があります。 – user2330778

2

これを行うにはいくつかの方法があります。 カウントの最大値を取得し、最大GWG

select playerid 
from scoring 
group by playerid 
having count(*) = (select max(c) from 
       (
        select playerid,count(*) c 
        from scoring 
        group by playerid 
       ) a 
      ) 

または降順でカウントし、順番にそれを入手してplayeridをフィルタリングし、一番上の行に

select playerid, count(*) as cnt 
from scoring 
group by playerid 
order by cnt desc 
limit 1; 
+0

ありがとう。私はアンバリログインページが読み込まれていないので、これを試すことができませんでした。私はそれを修正したら、これを試してみましょう! – user2330778

0

を取得し、私はあなたが必要とするすべては、このだと思います単純なクエリ

select playerid,max(scoring.gwg) as max from scoring group by playerid order by max desc 

ハイブは、サブクエリをサポートしていません。

関連する問題