"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > PostgreSQL prend-il en charge les fonctionnalités «Top N avec des liens»?

PostgreSQL prend-il en charge les fonctionnalités «Top N avec des liens»?

Publié le 2025-03-24
Parcourir:841

Does PostgreSQL Support `TOP n WITH TIES` Functionality?

limite avec Ties: PostgreSQL l'a-t-il implémenté?

Dans SQL Server, le haut de syntaxe N avec des liens récupère les premières lignes N avec des lignes attachées. Cependant, les utilisateurs de PostgreSQL peuvent se demander s'il existe une syntaxe équivalente.

Solution de PostgreSQL: avec liens (postgresql 13)

en commençant par PostgreSQL 13, la clause avec les liens a été introduite. Cette clause se comporte de manière similaire à son homologue SQL Server, récupérant les n lignes supérieures plus toutes les lignes attachées. Une solution de contournement consiste à exécuter la requête suivante:

avec cte comme ( SELECT *, RAND () ON (ORDER BY ) comme RNK De tbl ) SÉLECTIONNER * De CTE Où rnk ici, Rank () attribue à chaque ligne un rang, et les lignes liées au dernier rang n sont incluses.

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

considérer un tableau de table avec des valeurs {10, 9, 8, 2}. La requête suivante retournerait {10, 9, 8, 8} en utilisant la méthode alternative pour PostgreSQL 12 et plus:

avec CTE comme ( Sélectionnez nums, rank () over (Order by nums DESC) comme RNK À partir des nombres ) SÉLECTIONNER * De CTE Où rnk

Remarque:

La fonction RANK () utilisée dans cette alternative est différente de Dense_Rank (), car ce dernier produirait des résultats incorrects en renvoyant trop de lignes.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3