Hive Windowing ORDER BY

时间:2017-06-13 22:28:57

标签: hive hiveql windowing

您好我是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

我的问题是这个订单是如何通过分组代码来实现的?

1 个答案:

答案 0 :(得分:0)

如果你没有通过"指定"顺序,则没有订单。因为这个原因,组中的所有元素都具有相同的RANK,如果你想要不同的等级,你必须使用DENSE_RANK函数。