Maison > base de données > tutoriel mysql > Comment récupérer efficacement les N premières lignes de chaque groupe dans PostgreSQL ?

Comment récupérer efficacement les N premières lignes de chaque groupe dans PostgreSQL ?

Barbara Streisand
Libérer: 2025-01-15 11:05:45
original
500 Les gens l'ont consulté

How to Efficiently Fetch the First N Rows Within Each Group in PostgreSQL?

PostgreSQL : Récupération des N premières lignes de chaque groupe

Une tâche fréquente dans PostgreSQL consiste à sélectionner un nombre défini de lignes dans chaque groupe. Ceci peut être réalisé efficacement en utilisant une technique souvent appelée « LIMIT groupée ». Voici comment y parvenir à l'aide des fonctions de fenêtre (disponibles dans PostgreSQL 8.4 et versions ultérieures) :

SELECT *
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn,
    t.*
  FROM xxx t
) AS x
WHERE rn <= N;
Copier après la connexion

Explication :

La fonction de fenêtre ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) attribue un rang unique (rn) à chaque ligne de chaque groupe section_id, classé par colonne name. La requête externe filtre ensuite ces résultats, en ne conservant que les lignes dont le rang (rn) est inférieur ou égal à N (remplacez N par le nombre souhaité de lignes par groupe). Cela limite effectivement les résultats aux N premières lignes de chaque groupe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal