PostgreSQL äquivalent für die TOP-n-Bindung: LIMIT "mit Bande"?
Ich bin auf der Suche nach etwas ähnlich wie dies in SQL Server:
SELECT TOP n WITH TIES FROM tablename
Weiß ich über LIMIT
im PostgreSQL, aber nicht die Entsprechung der oben vorhanden??? Ich bin nur neugierig, wie es wäre, sparen Sie eine zusätzliche Abfrage jedes mal für mich.
Wenn ich eine Tabelle Numbers
mit dem Attribut nums
: {10, 9, 8, 8, 2}
. Ich möchte etwas machen wie:
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
Sollte es wieder {10, 9, 8, 8}
denn es nimmt die top-3-plus die zusätzlichen 8
da es Bindungen das andere.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine
WITH TIES
Klausel in PostgreSQL wie es ist in SQL Server.In PostgreSQL würde ich ersetzen, das für
TOP n WITH TIES .. ORDER BY <something>
:Klar zu sein,
rank()
richtig ist,dense_rank()
wäre falsch (Rückkehr zu viele Zeilen).Betrachten Sie dieses Zitat aus der SQL Server-docs (aus dem link oben):
Den job
WITH TIES
ist, um alle Kollegen in der letzten Reihe in der oberen n definiert durch dieORDER BY
- Klausel.rank()
gibt die genau das gleiche Ergebnis.Sicher zu gehen, getestet habe ich mit SQL-server, hier ist ein live-demo.
Und hier ist ein bequemer SQLfiddle.
WITH TIES
könnte falsch sein, für eine gegebene problem-Fall: stackoverflow.com/questions/2611822/...dense_rank()
. Aber die Frage bezieht sich hier auftop n with ties
, was eine offensichtliche Referenz zu SQL-server-syntax. Folglichrank()
ist das richtige hier.Versuchen Sie dies:
Ausgabe: 10, 9, 8, 8
Ausgabe: 10,10,9,8,8