我是sql的新手,正在完成任务。有一个问题,我应该使用rank函数,但我不知道如何使用它。我试图在互联网上找到一些信息,但仍然有问题。我在这里发帖提问,如果您有任何有用的文章或评论,请在此处发帖。
谢谢,
答案 0 :(得分:0)
排名功能的语法:
rank( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )
这是一个例子:
select rank(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;
答案 1 :(得分: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,所以请诚实地分配到期的信用额度。