반응형
오늘 살펴볼 POSTGRESQL의 ARRAY_AGG 함수는 ORACLE의 LISTAGG 와 같은 집계 함수라고 생각하면 된다.
LISTAGG 는 ORDER BY 표현식에 따라 쿼리 내 각 그룹의 행 순서를 지정해 값을 연결하여 하나의 문자열로 가져온다.
자세한 내용은 다음 게시글을 참고하자.
예제로 이해하기
컬러와 이름의 필드가 있는 데이터를 컬러 별로 묶어서 조회하고 싶을 때, ARRAY_AGG 함수를 사용해 배열로 집계를 한 뒤, ARRAY_TO_STRING 함수를 사용하여 문자열로 조회한다
ARRAY_AGG 배열 집계 조회
집계함수 이기 때문에 ARRAY_AGG의 필드외에는 GROUP BY 절에 넣어준다
SELECT color, ARRAY_AGG(name) array_name
FROM test_table
GROUP BY color
ARRAY_AGG 중복 데이터 제거
만약 중복된 데이터가 있는 경우는 아래와 같이 중복된 데이터로 집계가 될 수 있다.
이 때, 중복된 데이터를 제거하고 싶다면 DISTINCT 명령어를 사용하면 중복 데이터 제거 후 조회가능하다.
SELECT color, ARRAY_AGG(DISTINCT name) array_name
FROM test_table
GROUP BY color
ARRAY_AGG 데이터 정렬
또한, 배열로 집계되는 데이터 정렬도 가능하다
SELECT color, ARRAY_AGG(name ORDER BY name) array_name
FROM test_table
GROUP BY color
ARRAY_AGG 배열 집계 후 ARRAY_TO_STRING 조회
SELECT color, ARRAY_TO_STRING(ARRAY_AGG(name), ',') names
FROM test_table
GROUP BY color
♬ PostgreSQL: Documentation: 15: 9.19. Array Functions and Operators
728x90
반응형
'Database > SQL' 카테고리의 다른 글
[SQL] Database Custom Order By (Oracle/Tibero, MySQL, PostgreSQL) (0) | 2022.11.13 |
---|---|
[DBeaver] 일부 테이블의 ERD만 확인하는 방법 및 ERD 이미지 저장하기 (0) | 2022.07.15 |
[DBeaver] 알아두면 좋은 설정 및 자주 사용하는 단축키 (0) | 2022.07.15 |
[Oracle] 특정 컬럼이 존재하는, 존재하지 않는 테이블 찾기 (0) | 2022.03.16 |
[Oracle] DATE 타입의 컬럼 조회 조건 쿼리문 TO_DATE 사용? TO_CHAR 사용? (3) | 2022.03.14 |
댓글