0

私はSQLに不慣れで、割り当てに取り組んでいます。ランク関数をどこで使うのかという質問がありますが、どうやって使うのかわかりません。インターネットでいくつかの情報を見つけようとしましたが、それでも問題があります。ここに質問を投稿しています。役立つ記事やコメントがあれば、ここに投稿してください。

ありがとう、

4

2 に答える 2

0

ランク関数の構文:

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-11T04:34:59.490 に答える
0

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 について知っているほど賢いので、当然のことながらクレジットを割り当てることについては正直であることを心に留めておいてください。

于 2013-02-11T10:20:21.370 に答える