Aşağıdaki girişi vardır: Ben adıyla gruplama amBirliği
name | count | options
-----------------------
user1 | 12 | ['option1', 'option2', 'option3']
user2 | 2 | ['option1', 'option3']
:
name | count | options
-----------------------
user1 | 3 | ['option1', 'option2']
user1 | 12 | ['option2', 'option3']
user2 | 2 | ['option1', 'option3']
user2 | 1 | []
aşağıdaki çıktıyı istiyorum. Her grup için, sayım max
olarak toplanmalı ve seçenekler union
olarak toplanmalıdır. Bu ikincisini nasıl çözdüğümü bulmakta zorlanıyorum.
Şu anda, bu sorgu var:
with data(name, count, options) as (
select 'user1', 12, array['option1', 'option2']::text[]
union all
select 'user1', 12, array['option2', 'option3']::text[]
union all
select 'user2', 2, array['option1', 'option3']::text[]
union all
select 'user2', 1, array[]::text[]
)
select name, max(count)
from data
group by name
Bu kolayca özel bir toplama işlevi tanımlayarak yapılabilir biliyorum ama bir sorguya aracılığıyla bunu yapmak istiyor. unnest()
dizisinin temellerini anlıyorum (ve sonuçlarda daha sonra array_agg()
), ancak bunu sorgumda nasıl enjekte edeceğimi anlayamıyorum.
Başlat array_agg 'ile()'. Bu senin problemini çözüyor mu? –