"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 > Comment sélectionner la première ligne de chaque groupe dans un groupe postgresql par requête?

Comment sélectionner la première ligne de chaque groupe dans un groupe postgresql par requête?

Publié le 2025-02-10
Parcourir:348

How to Select the First Row of Each Group in a PostgreSQL GROUP BY Query?

Sélectionnez la première ligne du groupe par groupe de postgresql

Dans PostgreSQL, la sélection de la première ligne de chaque groupe dans le groupe par opération est une exigence commune. Pour ce faire, nous pouvons utiliser la clause puissante distincte sur .

SELECT DISTINCT ON (customer) id, customer, total
FROM purchases
ORDER BY customer, total DESC
La clause

sur nous permet de définir les expressions considérées comme des doublons. Dans ce cas, nous spécifions la colonne client , ce qui signifie que seule les lignes avec la même valeur client seront considérées comme des doublons.

La clause

par définit l'ordre dans lequel les lignes sont traitées. La première ligne dans chaque groupe client sera la ligne avec la valeur totale la plus élevée. Si plusieurs lignes ont la même valeur totale maximale, le facteur décisif sera l'ordre dans lequel les colonnes id seront définies.

points de clé

  • distinct sur est une extension de PostgreSQL qui nous permet de spécifier quelles expressions déterminent les doublons.
  • L'expression
  • distincte sur doit correspondre à l'expression principale de la clause d'ordre par .
  • La clause
  • par peut être utilisée pour déterminer la priorité de chaque groupe en ligne.
  • Vous pouvez inclure des expressions qui ne sont pas dans la clause distincte sur ou par dans la liste SELECT .
  • L'indice utilisé par la requête affectera considérablement les performances. Un index multi-colonnes couvrant le client , total et id dans le même ordre que la requête fournira les meilleures performances.

Instructions supplémentaires

La méthode distincte sur est très efficace pour les données avec une cardinalité de colonne élevée (un petit nombre de lignes par client). Cependant, pour les données avec une cardinalité inférieure de colonnes client (grand nombre de lignes par client), d'autres techniques de requête peuvent être plus efficaces.

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