Use la función agregada :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
o un constructor de matrices de los resultados de una subconsulta:
select
u.usr_id,
name,
array(
select tag_id
from tags t
where t.usr_id = u.usr_id
) as tag_arr
from users u
La segunda opción es una consulta simple de una sola fuente, mientras que la primera es más genérica, especialmente conveniente cuando necesita más de un agregado de una tabla relacionada. Además, la primera variante debería ser más rápida en tablas más grandes.
Tenga en cuenta que para un mejor rendimiento, usr_id
las columnas de ambas tablas deben indexarse. Mientras que normalmente users.usr_id
es una clave principal, a veces uno puede olvidar que el índice de la columna de referencia también es útil.