group by
쿼리PostgreSQL 데이터베이스에서 데이터를 처리할 때 group by
쿼리의 특정 필드에 대한 문자열을 연결해야 할 수도 있습니다. 이는 PostgreSQL 버전에 따라 다양한 방법으로 달성할 수 있습니다.
최신 PostgreSQL 버전(2010년 이후 출시)은 string_agg(expression, delimiter)
기능을 제공합니다. 이 함수를 사용하면 group by
쿼리에서 지정된 구분 기호로 구분된 문자열을 연결할 수 있습니다.
예를 들어 각 COMPANY_ID
그룹의 EMPLOYEE
필드를 조인하려면 다음 쿼리를 사용할 수 있습니다.
SELECT company_id, string_agg(employee, ', ') FROM mytable GROUP BY company_id;
PostgreSQL 8.4에서는 array_agg(expression)
집계 함수를 사용하여 값을 배열로 수집할 수 있습니다. 그런 다음 array_to_string()
함수를 사용하여 배열을 연결된 문자열로 변환할 수 있습니다.
SELECT company_id, array_to_string(array_agg(employee), ', ') FROM mytable GROUP BY company_id;
이전 PostgreSQL 버전에는 문자열 연결을 위한 내장 집계 함수가 없습니다. 한 가지 사용자 정의 구현에는 textcat
함수를 사용하여 사용자 정의 집계 함수를 생성하는 작업이 포함됩니다.
CREATE AGGREGATE textcat_all( basetype = text, sfunc = textcat, stype = text, initcond = '' );
또한 Null 값이나 빈 문자열을 무시하는 등 특정 요구 사항을 처리하기 위해 사용자 지정 연결 함수를 만들 수 있습니다.
CREATE FUNCTION commacat_ignore_nulls(acc text, instr text) RETURNS text AS $$ BEGIN IF acc IS NULL OR acc = '' THEN RETURN instr; ELSIF instr IS NULL OR instr = '' THEN RETURN acc; ELSE RETURN acc || ', ' || instr; END IF; END; $$ LANGUAGE plpgsql;
이 기능을 사용하면 다음과 같이 쿼리를 수정할 수 있습니다.
SELECT company_id, commacat_ignore_nulls(employee) FROM mytable GROUP BY company_id;
위 내용은 PostgreSQL '그룹별' 쿼리 내에서 문자열을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!