2017-06-13 6 views
-1

こんにちは私はハイブにはとても新しいので、ハイブのWINDOWING機能を学んでいました。私は問題を見つけました。ハイブウィンドウングORDER BY

私はクエリを書いた (各ティッカーは22件のレコードを持っていると私は最低のを探していました)各株式相場の最安終値を見つけるためにしようとしていた

SELECT ticker, close FROM 
    (SELECT ticker, close, RANK() OVER (PARTITION BY ticker) AS rank FROM stocks) AS p 
WHERE rank = 1 LIMIT 10; 

私は結果

を得ました
ticker close 
    A 28.15 
    A 27.93 
    A 28.82 
    A 27.84 
    A 28.29 
    A 28.46 
    A 27.58 
    A 28.73 
    A 29.82 
    A 29.3 

しかし、私はそれぞれのティッカーのために1つを望んでいました。

は、それから私は、同じクエリを実行しましたが、句

SELECT ticker, close FROM 
(SELECT ticker, close, RANK() OVER (PARTITION BY ticker ORDER BY close) AS rank FROM stocks) AS p 
WHERE rank = 1 LIMIT 20; 

、ORDER BYを追加しましたそして、私は理想的な結果を得ました。

ticker close 
    A 27.16 
    AA 10.57 
    AAPL 247.64 
    ABC 28.71 
    ABT 48.68 
ACE 52.43 
ADBE 27.36 
ADI 28.07 
ADM 27.0 
ADP 39.4 

ここで私の質問はティッカーをグループ化することでどのようになりますか?

答えて

0

"order by"句を指定しないと順序はありません。そのため、グループ内のすべての要素が同じRANKを持ちます。異なるランクを使用するには、DENSE_RANK関数を使用する必要があります。

+0

なぜグループ内でランクが同じですか、実際にランクとデンスランクを実行すると、ランクとデンスランクの両方で値が1になりますか? – Dereck

+0

問題を複製する値を含む挿入スクリプトを作成できますか? – hlagos