스마트웹앱콘텐츠전문가/데이터베이스

[PostgreSQL]GROUP BY JSON

9D4U 2021. 12. 7. 15:08
반응형

GROUP BY 구문에서

 

사용할 수 있는 함수들이 여러 가지가 있겠지만,

 

흔히 알려진 것은 집계함수 입니다.

 

평균(AVG), 최대(MAX), 최소(MIN) 등....

 

그 외에도, xxx_agg() 라고 하는 함수도 사용할 수 있습니다.

 

PostgreSQL에서 지원하는 agg 함수는

 

json_object_agg, array_agg, string_agg 등이 있습니다.

 

반응형

 

1. json_object_agg() : 해당 그룹 안에 있는 요소를 키, 값 형태로 출력하고 싶을 때 사용합니다.(JSON 형태로 출력)

 

id point subject
A1 10 A
B1 20 B
B2 30 B
C1 40 C

 

> select 
subject, 
max(point),
json_object_agg(id, point)
from table1 t1
group by subject
A 10 {"A1":10}
B 30 {"B1": 20, "B2": 30}
C 40 {"C1": 40}

 

2. array_agg() : 해당 그룹 안에 있는 요소를 배열 형태로 출력하고 싶을 때 사용합니다.

 

> select 
subject, 
max(point),
array_agg(id)
from table1 t1
group by subject
A 10 {A1}
B 30 {B1,B2}
C 40 {C1}

※ PostgreSQL에서 배열의 기본 형태는 [~] 이 아닌 {~} 형태임을 주의. 

( [~]형태로 출력하고 싶을 땐, json_agg() )

 

3. string_agg() : 해당 그룹 안에 있는 요소를 문자를 나열하는 형태로 출력하고 싶을 때 사용합니다.

 

> select 
subject, 
max(point),
string_agg(id, ',')
from table1 t1
group by subject

 

A 10 A1
B 30 B1,B2
C 40 C1

 

728x90