您好我是Hive的新手,正在学习Hive的WINDOWING功能。我遇到了一个问题。
我试图找到每个股票代码的最低收盘价(每个股票代码有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
但我想为每个自动收报机买一个。
然后我运行了相同的查询,但添加了ORDER BY子句
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;
我得到了理想的结果。
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 :(得分:0)
如果你没有通过"指定"顺序,则没有订单。因为这个原因,组中的所有元素都具有相同的RANK,如果你想要不同的等级,你必须使用DENSE_RANK函数。