私はSQLに不慣れで、割り当てに取り組んでいます。ランク関数をどこで使うのかという質問がありますが、どうやって使うのかわかりません。インターネットでいくつかの情報を見つけようとしましたが、それでも問題があります。ここに質問を投稿しています。役立つ記事やコメントがあれば、ここに投稿してください。
ありがとう、
私はSQLに不慣れで、割り当てに取り組んでいます。ランク関数をどこで使うのかという質問がありますが、どうやって使うのかわかりません。インターネットでいくつかの情報を見つけようとしましたが、それでも問題があります。ここに質問を投稿しています。役立つ記事やコメントがあれば、ここに投稿してください。
ありがとう、
ランク関数の構文:
rank( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )
これは例です:
select rank(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;
POST_DATErank()
の降順で並べると、最新の日付のランクが 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 がコメントしているように、実際には RANK() ではなく ROW_NUMBER() を使用します。その関数は、RANK() も DENSE_RANK も保証できないギャップなしで各行に個別の番号を生成するためです。それは次のようになります
row_number() over ( order by post_date desc, aid asc ) as rn
あなたの先生はおそらく StackOverflow について知っているほど賢いので、当然のことながらクレジットを割り当てることについては正直であることを心に留めておいてください。