Ich bin mit Postgresql Version 9.1.9:dose_rank() order by und nulls - wie man sie als unteren Rand der Rangliste behandelt?
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"
und ich habe eine einfache Tabelle (als Test bezeichnet wird), die eine einzige Nullable-bigint
Spalte (genannt A). Die Tabelle hat folgende Daten:
NULL
1
2
Jetzt möchte ich ein dichtes Ranking erstellen (also mit der dense_rank() Funktion) so dass ich die folgende Abfrage:
select "A", dense_rank() over (order by "A" desc) from public."Test"
Das gibt:
NULL,1
2,2
1,3
Interessanterweise, wenn ich genau dasselbe in SQL Server 2008 R2 einrichten und dieselbe Abfrage ausführen, wird zurückgegeben:
So2,1
1,2
NULL,3
, Ich interessiere mich für das richtig ist, aber mehr praktisch, was ich will, ist das Verhalten von SQL Server so, wie kann ich PostgreSQL die Null als Ende der Liste behandeln?
(das heißt Art NULLS als kleiner als jeder Wert)
Ich bemerkte dies auf der DENSE_RANK Seite, aber es ist nicht speziell über diese Funktion zu sprechen, aber vielleicht ist es ein Hinweis?
Hinweis: Der SQL-Standard definiert eine RESPECT NULLS oder IGNORE NULLS Option für Blei, Verzögerung, FIRST_VALUE, last_value und nth_value. Dies ist nicht in PostgreSQL implementiert: das Verhalten ist immer das gleiche wie der Standard Standard, nämlich RESPECT NULLS. Ebenso ist die Option FROM FIRST oder FROM LAST des Standards für nth_value nicht implementiert: Nur Das Standardverhalten FROM FIRST wird unterstützt. (Können Sie erreichen das Ergebnis FROM LAST durch die ORDER BY Umkehr der Bestellung.)
super - vielen Dank! (Ich dachte postgresql könnte übrigens der richtige sein :-)) – kmp