본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

81강 SQL 함수 정리 : PostgreSQL STRING_AGG Functions

by DoitSQL 2023. 1. 24.
728x90

PostgreSQL 기초강의,PostgreSQL 기초강좌

81강 SQL 함수 정리 : PostgreSQL STRING_AGG Functions   

 

SQL 함수 정리 81강 시작합니다.

 

이번 시간에는

 PostgreSQL STRING_AGG Functions

에 대해서 알아보는 시간입니다.

 

이번 시간에는 PostgreSQL STRING_AGG() 함수를 사용하여 문자열을 연결하고 문자열 사이에 구분자를 배치하는 방법에 대해 알아봅니다.


Introduction to PostgreSQL STRING_AGG() function   

PostgreSQL STRING_AGG() 함수는 문자열 목록을 연결하고 문자열 사이에 구분자를 배치하는 집계 함수입니다. 함수는 문자열 끝에 구분 기호를 추가하지 않습니다.

다음은 STRING_AGG() 함수의 구문을 보여줍니다:

STRING_AGG ( expression, separator [order_by_clause] ) 

 

STRING_AGG() 함수는 두 개의 인수와 선택적 ORDER BY 절을 사용할 수 있습니다.

  • expression은 문자열로 확인할 수 있는 모든 유효한 표현식입니다. 문자열 유형이 아닌 다른 유형을 사용하는 경우 해당 유형의 이러한 값을 문자열 유형에 명시적으로 캐스팅해야 합니다.
  • separator는 연결된 문자열의 구분자입니다.

order_by_clause는 연결된 결과의 순서를 지정하는 선택적 절입니다. 형식은 다음과 같습니다:

ORDER BY expression1 {ASC | DESC}, [...]  

 

STRING_AGG()는 반환 형식을 제외하고 ARRAY_AGG() 함수와 유사합니다. STRING_AGG() 함수의 반환 형식은 문자열이고 ARRAY_AGG() 함수의 반환 형식은 배열입니다.

AVG(), COUNT(), MAX(), MIN(), SUM()과 같은 다른 집계 함수와 마찬가지로 STRING_AGG() 함수도 GROUP BY 절과 함께 사용됩니다.


PostgreSQL STRING_AGG() function examples   

샘플 DVD_RENTAL 데이터베이스의 film, film_actor 및 actor 테이블을 시연에 사용합니다.

실습테이블

erd에 관계 표시가 잘못되어 있는데

film : film_actor는 1:n

actor : film_actor는 1:n 관계입니다.

한 영화는 여러 배우가 출연하며, 배우는 여러 영화에 출연할 수 있습니다.

영화와 배우 사이에 film_actor라는 관계 테이블이 존재하는 형태입니다.

 

A) Using STRING_AGG() function to generate a list of comma-separated values    

이 예에서는 STRING_AGG() 함수를 사용하여 필름 테이블에서 각 필름의 배우 이름 목록을 반환합니다:

SELECT
    f.title,
    STRING_AGG (
a.first_name || ' ' || a.last_name,
        ','
       ORDER BY
        a.first_name,
        a.last_name
    ) actors
FROM
    film f
INNER JOIN film_actor fa USING (film_id)
INNER JOIN actor a USING (actor_id)
GROUP BY
    f.title;  

결과

 

B) Using STRING_AGG() function to generate a list of emails   

다음 예제에서는 STRING_AGG() 함수를 사용하여 각 국가의 이메일 목록을 작성합니다. 각 목록의 전자 메일을 세미콜론으로 구분합니다.

SELECT
    country,
    STRING_AGG (email, ';') email_list
FROM
    customer
INNER JOIN address USING (address_id)
INNER JOIN city USING (city_id)
INNER JOIN country USING (country_id)
GROUP BY
    country
ORDER BY
    country;  

결과


이번 시간에는 PostgreSQL STRING_AGG() 함수를 사용하여 문자열을 연결하고 문자열 사이에 구분자를 배치하는 방법에 대해 배웠습니다.

 

감사합니다.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글