0

我是 sql 新手,正在做作业。有一个问题,我应该在哪里使用 rank 函数,但我不知道如何使用它。我试图在互联网上找到一些信息,但仍然有问题。我在这里发布问题,如果您有任何有用的文章或评论,请在此处发布。

谢谢,

4

2 回答 2

0

rank 函数的语法:

rank( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )

这是一个例子:

select rank(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;
于 2013-02-11T04:34:59.490 回答
0

当我们使用rank()POST_DATE 降序排序时,最近日期的排名为 1:

select aid
       , email
       , trunc((rnk-1)/5) + 1 as pageno
from ( select aid
              , email
              , rank() over (order by post_date desc ) as rnk
       from ads )

您可能需要调整页码的计算;这个问题在这个分数上有些模棱两可(“对于将在第一页以外的页面中列出的所有广告,该广告将列出的页码”)。


正如@AndriyM 评论的那样,在现实生活中,我们将为此使用 ROW_NUMBER() 而不是 RANK() 因为该函数将为每一行生成一个不同的数字而没有间隙,RANK() 和 DENSE_RANK 都不能保证。那看起来像

row_number() over ( order by post_date desc, aid asc ) as rn

请记住,您的老师可能足够聪明,知道 StackOverflow,因此请诚实地在应得的地方分配学分。

于 2013-02-11T10:20:21.370 回答