PostgreSQL에서는 쿼리에 다른 열을 포함하면서 단일 열을 집계하는 것은 번거로울 수 있습니다. 그러나 사용 가능한 솔루션이 있습니다.
PostgreSQL 9.1 이상에서는 프로세스가 단순화됩니다. GROUP BY로 집계할 때는 테이블의 기본 키만 포함하면 됩니다. 따라서 foo1이 tbl1의 기본 키인 경우 쿼리는 다음과 같이 단순화될 수 있습니다.
SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ') FROM tbl1 GROUP BY 1 ORDER BY foo7, foo8;
여러 테이블과 관계가 있는 쿼리의 경우 다음을 수행하는 것이 더 효율적일 수 있습니다. 먼저 집계하고 나중에 참여하세요. 예:
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 ...
이렇게 하면 쿼리의 관련 부분에서만 집계가 수행되어 성능이 향상됩니다.
위 내용은 여러 열이 있는 PostgreSQL 쿼리에서 단일 열을 효율적으로 집계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!