私は、PostgreSQLバージョン9.1.9使用しています:dense_rank()order byとnulls - ランキングの最下位として扱う方法
select version();
"PostgreSQL 9.1.9 on armv7l-unknown-linux-gnueabihf,
compiled by gcc (Debian 4.6.3-14+rpi1) 4.6.3, 32-bit"
を、私は(Aと呼ばれる)、単一のNULL可能bigint
の列を持っている(テストと呼ばれる)単純なテーブルを持っています。テーブルには、次のデータがあります。
NULL
1
2
は、今私は(それゆえdense_rank()機能を使用して)密なランキングを作成したいので、私は次のクエリを実行します。
select "A", dense_rank() over (order by "A" desc) from public."Test"
これが返されます。
NULL,1
2,2
1,3
を
興味深いことに、SQL Server 2008 R2で同じことを設定して同じクエリを実行すると、返されるメッセージは次のようになります。
2,1
1,2
NULL,3
だから、私は正しいが誰であるかに興味を持っていますが、より実用的に、私がしたいことはそうSQL Serverの動作である、はどのように私は、PostgreSQLがランキングの下にnullを扱うことができますか?
(すなわち、任意の値よりも小さいようNULLSを並べ替える)
私はDENSE_RANKページでこれを気づいたが、それはこの機能については特に話をされていませんが、おそらくそれは、手がかりとなりますか?
注:SQL標準はRESPECTのNULLSを定義したり、リード、ラグ、FIRST_VALUE、LAST_VALUE、およびNTH_VALUEためNULLSオプション を無視します。これはPostgreSQLで実装された ではありません。動作は常に 標準のデフォルトと同じです(RESPECT NULLSと同じです)。同様に、nth_valueの標準の FROM FIRSTまたはFROM LASTオプションは実装されていません。 デフォルトのFROM FIRSTビヘイビアがサポートされています。 (ORDER BY順序付けを逆に行うLAST FROMの 結果を達成することができます。)
素晴らしい - どうもありがとうございました! (私はpostgresqlが正しい方法かもしれないと思った:-)) – kmp