Para todos los grupos con más de 365 días de antigüedad, listar cuántas menciones han tenido, en orden ascendente.
Para todos los grupos con más de 365 días de antigüedad, listar cuántas menciones han tenido, en orden ascendente, solo si han tenido menos de cinco menciones.
Para todos los grupos con menos de 10 miembros, listar cuántos miembros tienen.
Si es así, puedo hacerlo por ti; toda la información que necesitas estaría almacenada en groups, group_users y group_mentions.
Por lo que puedo ver, Discourse no lleva un registro explícito de las menciones, pero sí rastrea los enlaces que se agregan a los temas. Una mención de grupo en un post se registra como el valor del campo url en la tabla topic_links, con el siguiente formato: "/groups/<nombre_del_grupo>". La siguiente consulta debería acercarse a lo que buscas. Necesitarás proporcionar valores para los parámetros start_date y end_date. Esas fechas deben estar en formato aaaa-mm-dd. Por ejemplo, para obtener datos del último año, ingresa 2020-01-01 como start_date y 2020-12-31 como end_date:
--[params]
-- date :start_date
-- date :end_date
WITH group_mentions AS (
SELECT
split_part(url, '/', 3) AS group_name
FROM topic_links tl
JOIN topics t ON t.id = tl.topic_id
WHERE internal = true
AND url LIKE '/groups/%'
AND t.deleted_at IS NULL
AND t.archetype = 'regular'
AND tl.created_at::date BETWEEN :start_date AND :end_date
)
SELECT
gm.group_name,
COUNT(gm.group_name) AS mention_count
FROM group_mentions gm
JOIN groups g ON g.name = gm.group_name
WHERE g.created_at::date <= :start_date
GROUP BY gm.group_name
ORDER BY mention_count DESC
La consulta solo devuelve menciones agregadas a publicaciones regulares (aunque sí incluye menciones agregadas a publicaciones tipo susurro). Si deseas incluir en los resultados las menciones agregadas a mensajes personales, elimina la línea AND t.archetype = 'regular' de la primera consulta.
Házmelo saber si esto no devuelve el tipo de datos que buscas. Intentaré responder a tus otras preguntas mañana si nadie lo hace antes.