Quais reações são as mais usadas na sua comunidade?

Continuando a discussão de Reactions on Meta:

Eu estava curioso sobre como as reações são usadas em um site em que trabalho em meio período. É um fórum sobre admissões universitárias, então há posts sobre alunos sendo aceitos/rejeitados de sua escola dos sonhos e coisas do tipo. Usamos :+1: como nosso emoji de “like”, e é por isso que ele aparece tão alto em comparação com :heart:, que é o “like” padrão. Aqui está o que eu encontrei:

reação posts contagem
:+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

Eu criei a lista inicial de reações olhando quais são os emojis mais usados em posts. Ajustamos a lista com base no feedback dos membros. Sou fã de :heavy_check_mark:, mas ficou claro muito cedo que a comunidade não era. Então eu o troquei por outra coisa.

Se você quiser ver como seu site se compara, a consulta que usei é:

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

Curiosidade: tivemos dificuldade em descobrir por que o emoji :gift: era tão comumente usado em posts. Eventualmente, rastreei o culpado: :robot:.

10 curtidas

Vamos mover isso para a Community para que mais pessoas vejam. :eyes:

Embora a consulta não esteja contando as Reações corretamente, ou pelo menos não todas as nossas (possivelmente porque ativamos as Reações no meio do processo)

reação posts contagem
:heart: 52295 144915
:+1: 1167 1224
:100: 1101 1236

versus:

valor_reacao contagem
:heart: 1371442
:100: 1236
:+1: 1224
Para constar, tenho usado uma pequena variação desta para produzir nossa tabela:
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

Também existe a padrão na seção de relatórios para verificar (mas a tabela não é tão fácil de copiar e colar :slight_smile:) - /admin/reports/reactions

4 curtidas

Ah. UNION ALL é a maneira correta de fazer essa consulta, pois você está contando duas coisas muito diferentes. Minha consulta precisa de um outer join para cobrir posts que não têm uma entrada em discourse_reactions_reactions. Adicionar isso fez com que minha consulta atingisse o tempo limite, então não posso verificar se isso resolve o problema. Union é a resposta correta aqui em qualquer caso.

Estou um pouco curioso se post_actions pode contar curtidas em excesso, no entanto. Ele leva em consideração as pessoas que curtem um post e depois removem ou alteram essa reação?

Precisei mudar ‘heart’ para ‘+1’ na consulta, já que usamos :+1: para nossas curtidas no College Confidential. Aqui está o meu resultado dessa 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 curtidas

Esse é um bom ponto. Deixe-me voltar e inserir um AND deleted_at IS NULL.

1 curtida