排名函数oracle sql

问题描述 投票:0回答:2

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

谢谢,

sql oracle window-functions top-n
2个回答
0
投票

当我们使用按POST_DATE降序排序的rank()时,最近的日期排名为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,因此请诚实地分配信用到期日。


0
投票

排名函数的语法:

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

这是一个例子:

select rank(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;
© www.soinside.com 2019 - 2024. All rights reserved.