SQL 문자열 집계 함수

Sql Munjayeol Jibgye Hamsu



SQL 데이터베이스를 다루어 본 적이 있다면 아마도 집계 함수에 익숙할 것입니다. 이는 본질적으로 일련의 값에 대해 계산을 수행하고 단일 결과를 반환하는 함수 집합입니다.

예제에는 SUM(), AVG(), COUNT(), MAX 및 MIN()과 같은 함수가 포함됩니다. 그러나 SQL의 집계 함수에 대해 알 수 있는 한 가지는 숫자 연산에 맞춰져 있다는 것입니다.

그런데 문자열 값을 처리하는 집계 함수가 있다는 것을 알고 계셨나요? 이 튜토리얼에서는 이러한 기능과 작동 방식, 데이터베이스에서 이를 사용하는 방법을 살펴보겠습니다.







참고: 이 게시물에서 논의되는 대부분의 함수는 표준 SQL의 일부가 아니라는 점을 참고하세요. 결과적으로 PostgreSQL, SQL Server 등과 같은 다양한 데이터베이스 엔진의 확장입니다.



문자열 집계 함수란 무엇입니까?

문자열 집계 함수는 그룹 또는 행 내의 문자열 집합에 대해 집계 작업을 수행하고 단일 결과를 반환하는 함수 집합입니다.



우리는 주로 GROUP BY 절과 함께 이러한 함수를 사용하여 특정 열을 기준으로 행을 그룹화한 다음 각 그룹의 문자열을 집계합니다.





몇 가지 일반적인 문자열 집계 함수는 다음과 같습니다.

  • GROUP_CONCAT() – PostgreSQL 및 MySQL
  • STRING_AGG – SQL 서버
  • ARRAY_AGG – PostgreSQL
  • LISTAGG - 오라클

각 기능과 그것이 제공하는 기능을 살펴보겠습니다.



GROUP_CONCAT()

GROUP_CONCAT() 함수는 PostgreSQL 및 MySQL 데이터베이스에서 지원됩니다. 이를 통해 여러 행의 값을 단일 문자열로 연결할 수 있습니다.

다음과 같은 'employees' 테이블이 있다고 가정해 보겠습니다.

CREATE TABLE 직원(
직원 ID INT AUTO_INCREMENT 기본 키,
이름 VARCHAR(50),
성 VARCHAR(50),
부서 VARCHAR(50)
);

INSERT INTO 직원(이름, 성, 부서) VALUES
('앨리스', '스미스', '인적 자원'),
('밥', '존슨', '마케팅'),
('찰리', '윌슨', '금융'),
('데이비드', '브라운', '판매'),
('에바', '데이비스', '엔지니어링');

산출:

이름을 가져와 성과 이름을 연결하여 직원의 전체 이름을 확인하려면 다음 예제와 같이 GROUP_CONCAT() 함수를 사용할 수 있습니다.

선택하다
부서,
GROUP_CONCAT(first_name, ' ', last_name) AS 전체 이름
에서
직원
그룹 기준
부서;

이 경우 함수를 사용하여 'first_name' 및 'last_name' 열의 문자열을 연결하고, 빈 문자열을 사용하여 이름에 공백을 추가합니다.

여기에는 각 부서의 직원 목록이 포함되어 있습니다.

STRING_AGG

이 함수는 GROUP_CONCAT() 함수와 유사하지만 SQL Server 데이터베이스에서만 지원됩니다.

사용 예는 다음과 같습니다.

선택하다
부서,
STRING_AGG(이름, 성, ' ') AS 전체 이름
에서
직원
그룹 기준
부서;

지정된 열을 구분 기호로 공백으로 문자열 연결을 수행합니다.

ARRAY_AGG

ARRAY_AGG 함수는 PostgreSQL 데이터베이스에서만 사용할 수 있습니다. 이를 통해 값을 단일 배열로 집계할 수 있습니다.

예는 다음과 같습니다.

선택하다
부서,
ARRAY_AGG(first_name) AS 직원_목록
에서
직원
그룹 기준
부서;

그러면 직원 이름이 배열로 집계되어야 합니다.

목록()

LISTAGG() 함수는 Oracle 데이터베이스에서만 사용할 수 있습니다. 이를 통해 지정된 구분 기호를 사용하여 값을 단일 문자열로 연결할 수 있습니다.

예는 다음과 같습니다.

SELECT 부서, LISTAGG(first_name, last_name,  ' ') WITHIN GROUP (ORDER BY Employee_name ASC) AS 직원
직원으로부터
부서별 그룹;

이는 직원의 이름과 지정된 구분 기호를 연결합니다.

결론

이 튜토리얼에서는 문자열 값 목록을 제공하고 단일 결과 문자열 값에 대한 작업을 수행할 수 있는 문자열 집계 함수에 대해 배웠습니다.