Maison > base de données > tutoriel mysql > Comment agréger efficacement une seule colonne dans des requêtes PostgreSQL avec plusieurs colonnes ?

Comment agréger efficacement une seule colonne dans des requêtes PostgreSQL avec plusieurs colonnes ?

Patricia Arquette
Libérer: 2024-12-31 13:55:08
original
824 Les gens l'ont consulté

How to Efficiently Aggregate a Single Column in PostgreSQL Queries with Multiple Columns?

Comment agréger une seule colonne dans une requête avec plusieurs colonnes supplémentaires

Dans PostgreSQL, agréger une seule colonne tout en incluant d'autres colonnes dans la requête peut s'avérer fastidieux. Cependant, des solutions sont disponibles.

Utiliser Group By pour les clés primaires

PostgreSQL 9.1 et versions ultérieures simplifie le processus. Lors de l'agrégation avec GROUP BY, il vous suffit d'inclure la clé primaire de la table. Ainsi, si foo1 est la clé primaire de tbl1, votre requête peut être simplifiée en :

SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ')
FROM   tbl1
GROUP  BY 1
ORDER  BY foo7, foo8;
Copier après la connexion

Agrégation avant de rejoindre

Pour les requêtes avec plusieurs tables et relations, il peut être plus efficace de regroupez d’abord et rejoignez plus tard. Par exemple :

SELECT t1.foo1, t1.foo2, ...
     , t2.bar1, t2.bar2, ...
     , a.aggregated_col 
FROM   tbl1 t1
LEFT   JOIN tbl2 t2 ON ...
...
LEFT   JOIN (
   SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col
   FROM   agg_tbl a ON ...
   GROUP  BY some_id
   ) a ON a.some_id = ?.some_id
ORDER  BY ...
Copier après la connexion

Cela garantit que l'agrégation est effectuée uniquement dans la partie pertinente de la requête, améliorant ainsi les performances.

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!

source:php.cn
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