我是新来的sql和工作任务。有一个问题,我应该使用rank函数,但我不知道如何使用它。我试图在网上找到一些信息,但仍然有问题。我在这里发布问题,如果您有任何有用的文章或评论,请在此发布。Rank函数oracle sql
感谢,
我是新来的sql和工作任务。有一个问题,我应该使用rank函数,但我不知道如何使用它。我试图在网上找到一些信息,但仍然有问题。我在这里发布问题,如果您有任何有用的文章或评论,请在此发布。Rank函数oracle sql
感谢,
我不undersatand什么是如此难以把握有关秩()通过降序发布日期,但在这里它是无论如何:
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上请紧,所以说实话在哪里这是由于分配功劳。
秩函数的语法:
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-11 04:37:33
我认为它应该是ROW_NUMBER而不是RANK。使用RANK,你可能会得到类似'1,2,3,3,5,5,5,8,...'的结果页码为'1,1,1,1,1,1,1, 2,...',即在同一页面上超过5个项目。当然,对于ROW_NUMBER来说,最好是提供一个决胜局,我认为'aid'应该是一样的。 (即使不是理想的,也至少会使结果可预测。) – 2013-02-11 10:30:43