Maison >base de données >tutoriel mysql >Comment sélectionner la première ligne de chaque groupe dans un groupe postgresql par requête?
Sélectionnez la première ligne du groupe PostgreSQL GROUP BY
Dans PostgreSQL, la sélection de la première ligne de chaque groupe dans une opération GROUP BY est une exigence courante. Pour cela, nous pouvons utiliser la puissante clause DISTINCT ON
.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC</code>La clause
DISTINCT ON
nous permet de définir quelles expressions sont considérées comme des doublons. Dans cet exemple, nous avons spécifié la colonne customer
, ce qui signifie que seules les lignes avec la même valeur customer
seront considérées comme des doublons.
ORDER BY
définit l'ordre dans lequel les lignes sont traitées. La première ligne de chaque customer
groupe sera la ligne avec la valeur totale la plus élevée. S'il existe plusieurs lignes avec la même valeur totale maximale, le facteur décisif sera l'ordre dans lequel les colonnes id
sont définies.
Points clés
DISTINCT ON
est une extension de PostgreSQL qui nous permet de spécifier quelles expressions déterminent les doublons. DISTINCT ON
doit correspondre à l'expression principale de la clause ORDER BY
. ORDER BY
peut être utilisée pour hiérarchiser les lignes au sein de chaque groupe. SELECT
qui ne sont pas dans une clause DISTINCT ON
ou ORDER BY
. customer
, total
et id
, dans le même ordre que la requête, offrira les meilleures performances. Notes supplémentaires
Pour les données avec customer
cardinalité de colonne élevée (un petit nombre de lignes par client), la méthode DISTINCT ON
est très efficace. Cependant, pour les customer
données avec une faible cardinalité de colonne (grand nombre de lignes par client), d'autres techniques de requête peuvent être plus efficaces.
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!