如何在不实际显示排名的情况下使用排名功能?

How can I use rank function without actually showing rank?

我得到:

 YEAR   MONTH        DAY SHARES_TRADED NUM_TRADES DOLLAR_VOLUME
---------- ---------- ---------- ------------- ---------- -------------
      rank
----------
      2010      1          4    1425504460    4628115    3.8495E+10
     1

      2010      1          5    1754011750    5394016    4.3932E+10
     2

      2010      1          6    1655507953    5494460    4.3817E+10
     3

但我想得到:

YEAR   MONTH        DAY SHARES_TRADED NUM_TRADES DOLLAR_VOLUME
---------- ---------- ---------- ------------- ---------- -------------


      2010      1          4    1425504460    4628115    3.8495E+10


      2010      1          5    1754011750    5394016    4.3932E+10


      2010      1          6    1655507953    5494460    4.3817E+10

我正在使用排名函数,例如:

select year, month, day, shares_traded,num_trades, dollar_volume, rank() over (partition by year, month order by day asc) "rank" from nyse;

我想使用排名功能,但我不想让排名达到 appear.Is 有什么办法吗?

假设您打算在别处使用 rank(),请使用 CTE

with CTE as
(
select year, month, day, shares_traded,num_trades, dollar_volume, rank() over (partition by year, month order by day asc) "rank" from nyse
)
select year, month, day,  shares_traded,num_trades, dollar_volume
from CTE
order by CTE."rank"

使用子查询:

SELECT year,
       month,
       day,
       shares_traded,
       num_trades,
       dollar_volume
FROM   (
  select year,
         month,
         day,
         shares_traded,
         num_trades,
         dollar_volume,
         rank() over (partition by year, month order by day asc) "rank"
  from   nyse
)
WHERE  "rank" = 1; -- Or whatever filtering you want to do on rank.