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) :
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn, t.* FROM xxx t ) AS x WHERE rn <= N;</code>
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!