Nuestro team especializado pasados ciertos días de investigación y recopilación de de información, dieron con la solución, deseamos que todo este artículo sea de utilidad para tu trabajo.
Solución:
Hay dos formas más.
1) hacer un array de filas, limitarlo y luego concatenar en string:
SELECT array_to_string((array_agg(DISTINCT tag))[1:3], ', ') FROM tbl
(“array[1:3]” significa: tomar elementos del 1 al 3 de array)
2) concatenar filas en string sin límite, luego use “substring” para recortarlo:
string_agg(distinct(tag),',')
Si sabe que su campo “etiqueta” no puede contener ,
carácter, entonces puede seleccionar todo el texto antes de la enésima aparición de su ,
SELECT substring(
string_agg(DISTINCT tag, ',')
from '(?:[^,]+,)1,3')
FROM tbl
Esta subcadena seleccionará 3 o menos cadenas divididas por ,
A limit the number of elements in the following string_agg()
usar LIMIT
en una subconsulta:
SELECT string_agg(tag, ', ') AS tags
FROM (
SELECT DISTINCT tag
FROM tbl
-- ORDER BY tag -- optionally order to get deterministic result
LIMIT 123 -- add your limit here
) sub;
Tenga en cuenta que la subconsulta no es un problema para el rendimiento en absoluto. De lo contrarioesto es típicamente más rápidoincluso si no impone un número máximo con LIMIT
porque el grupo DISTINCT
en la función agregada es más costoso que hacerlo en una subconsulta para todas las filas a la vez.
O, para obtener el “100 etiquetas más comunes“:
SELECT string_agg(tag, ', ') AS tags
FROM (
SELECT tag
FROM tbl
GROUP BY tag
ORDER BY count(*) DESC
LIMIT 100
) sub;
No soy consciente de que se puede limitar en el string_agg()
función. Puedes limitarlo de otras maneras:
select postid, string_agg(distinct(tag), ', ')
from table t
group by postid
Entonces puedes hacer:
select postid, string_agg(distinct (case when seqnum <= 10 then tag end), ', ')
from (select t.*, dense_rank() over (partition by postid order by tag) as seqnum
from table t
) t
group by postid
valoraciones y reseñas
Más adelante puedes encontrar las reseñas de otros desarrolladores, tú de igual manera puedes insertar el tuyo si te gusta.