将查询中的一列与许多其他列聚合
当查询结果集中的多个列时,聚合单个列可以是挑战。虽然您可以使用引用答案中提到的方法,但它可能会导致冗长的查询。
简化查询(PostgreSQL 9.1 及更高版本)
PostgreSQL 9.1 及更高版本提供了一种更简单的方法。通过按表的主键分组,您可以聚合指定列,而不必在 GROUP BY 子句中包含所有列。
例如,如果 foo1 是示例查询中的主键:
SELECT foo1, foo2, foo3, foo4, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo5, foo6
多个表和关系
当您的查询涉及具有不同类型的多个表时对于关系,先聚合然后连接通常会更有效:
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 ...
通过分离聚合和连接操作,您的查询将变得更高效且更易于阅读。
以上是如何在多列查询中高效聚合列?的详细内容。更多信息请关注PHP中文网其他相关文章!