我是新來的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