配置单元窗口顺序

sy5wg1nm  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(443)

你好,我是一个非常新的Hive和学习窗口功能的Hive。我遇到了一个问题。
我试图找到每个股票的最低收盘价(每个股票有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

但我希望每个股票都有一个。
然后我运行了相同的查询,但是添加了orderby子句

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

我在这里的问题是,这是如何通过分组股票的顺序?

3j86kqsm

3j86kqsm1#

如果不指定“order by”子句,则没有顺序,因此组中的所有元素都具有相同的秩,如果需要不同的秩,则必须使用稠密的秩函数。

相关问题