¿Qué reacciones son las más usadas en tu comunidad?

Continuando la discusión de Reacciones en Meta:

Tenía curiosidad sobre cómo se usan las reacciones en un sitio en el que trabajo a tiempo parcial. Es un foro sobre admisiones universitarias, por lo que hay publicaciones sobre estudiantes que son aceptados/rechazados de su escuela soñada y cosas por el estilo. Usamos :+1: como nuestro emoji de “me gusta”, por eso ocupa un lugar tan alto en comparación con :heart:, que es el “me gusta” predeterminado. Esto es lo que encontré:

reacción publicaciones recuento
:+1: 260494 720859
:100: 16116 25738
:heart: 13315 23523
:tada: 7538 22674
:rofl: 7200 15720
:mending_heart: 6341 26875
:bulb: 3854 4404
:astonished: 2795 4911
:smile: 2286 2881
:joy: 1758 2623
:sob: 1708 2360
:angry: 1613 3396
:wink: 336 352
:heavy_check_mark: 30 43

Creé la lista inicial de reacciones observando cuáles son los emojis más utilizados en las publicaciones. Ajustamos la lista según los comentarios de los miembros. Soy fan de :heavy_check_mark:, pero estaba claro desde el principio que la comunidad no lo era. Así que lo cambié por otra cosa.

Si quieres ver cómo se compara tu sitio, la consulta que utilicé es:

select ':'||reaction_value||':' reaction, 
       count(*) posts, 
       coalesce(sum(reaction_users_count), sum(like_count)) count
from discourse_reactions_reactions drr
     join posts p on post_id = p.id
group by reaction_value
order by count(*) desc

Dato curioso: nos costó averiguar por qué el emoji :gift: se usaba tanto en las publicaciones. Finalmente rastreé al culpable: :robot:.

10 Me gusta

Vamos a pasar esto a Community para que más gente lo vea. :ojos:

Aunque la consulta no está contando los “Me gusta” correctamente, o al menos no todos los nuestros (posiblemente porque hemos activado las “Reacciones” a mitad de camino)

reacción publicaciones recuento
:corazón: 52295 144915
:+1: 1167 1224
:100: 1101 1236

versus:

valor_reacción recuento
:corazón: 1371442
:100: 1236
:+1: 1224
Para que conste, he estado usando una pequeña variación de esta para producir nuestra tabla:
SELECT source.reaction_value,
       count
FROM

 (
 (

SELECT
    CASE WHEN post_action_type_id = 2 THEN 'heart' END AS reaction_value,
    COUNT(*) AS count
FROM post_actions
WHERE post_action_type_id = 2
  AND deleted_at IS NULL
GROUP BY 1

)
UNION ALL
(

SELECT
    reaction_value,
    SUM(reaction_users_count) AS count
FROM discourse_reactions_reactions
WHERE reaction_value <> 'heart'
GROUP BY 1

)
) AS source

GROUP BY 1,2
ORDER BY 2 DESC

También está la opción estándar en la sección de informes para verificar (pero la tabla no es tan fácil de copiar y pegar :sonrisa:) - /admin/reports/reactions

4 Me gusta

Ah. UNION ALL es la forma correcta de hacer esta consulta ya que estás contando dos cosas muy diferentes. Mi consulta necesita un outer join para cubrir las publicaciones que no tienen una entrada en discourse_reactions_reactions. Añadir eso hizo que mi consulta agotara el tiempo de espera, por lo que no puedo verificar que eso resuelva el problema. Union es la respuesta correcta aquí en cualquier caso.

Tengo un poco de curiosidad si post_actions podría contar en exceso los “me gusta”. ¿Tiene en cuenta a las personas a las que les gusta una publicación y luego eliminan o cambian esa reacción?

Necesité cambiar ‘heart’ por ‘+1’ en la consulta, ya que usamos :+1: para nuestros “me gusta” en College Confidential. Aquí está mi resultado de esa consulta:

reaction count
:+1: 2089798
:mending_heart: 28167
:100: 27070
:heart: 24676
:tada: 24055
:rofl: 16778
:astonished: 5325
:bulb: 4590
:angry: 3547
:smile: 3078
:joy: 2623
:sob: 2443
:wink: 369
:heavy_check_mark: 43
2 Me gusta

Ese es un buen punto. Déjame volver y añadir un AND deleted_at IS NULL.

1 me gusta