„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Unterstützt Postgresql "Top n mit Krawatten" -Funktionalität?

Unterstützt Postgresql "Top n mit Krawatten" -Funktionalität?

Gepostet am 2025-03-24
Durchsuche:202

Does PostgreSQL Support `TOP n WITH TIES` Functionality?

limit with bindes: Hat postgresql es implementiert?

In SQL Server ruft das Syntax Top n mit Krawatten zusammen und ruft die ersten N -Reihen zusammen mit allen Strecken ab. Postgresql -Benutzer fragen sich jedoch möglicherweise, ob es eine äquivalente Syntax gibt.

postgresqls Lösung: mit Bindungen (postgresql 13)

beginnend mit Postgresql 13 wurde eingeführt. Diese Klausel verhält sich ähnlich wie sein SQL -Server -Gegenstück und holt die oberen N -Zeilen plus gebundene Zeilen. Eine Problemumgehung besteht darin, die folgende Abfrage auszuführen:

mit CTE as (( Wählen Sie *, rank () over (bestellen von ) als RNK Von tbl ) WÄHLEN * Von cte Wobei rnk hier, rank () jeder Zeile einen Rang zuweist und Zeilen, die für den letzten Rang gebunden sind, sind enthalten.

example
WITH cte AS (
   SELECT *, rank() OVER (ORDER BY ) AS rnk
   FROM   tbl
   )
SELECT *
FROM   cte
WHERE  rnk  

eine Tabellenzahlen mit Werten {10, 9, 8, 8, 2}. Die folgende Abfrage würde {10, 9, 8, 8} anhand der alternativen Methode für PostgreSQL 12 und älter zurückgeben:

mit cte als ( Wählen Sie NUMS, Rank () Over (Order by Nums Desc) als RNK Aus Zahlen ) WÄHLEN * Von cte Wobei rnk

Hinweis:

Die in dieser Alternative verwendete Funktion rank () unterscheidet sich von dense_rank (), da letztere falsche Ergebnisse erzielen würden, indem sie zu viele Zeilen zurückgeben.

.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3