Estou planejando substituir o retort por discourse reactions. Para descobrir quais emojis usar, eu queria saber como é o uso deles no meu fórum. Como não encontrei uma consulta para isso, compartilho a minha:
Contar emojis adicionados com o plugin retort
SELECT count(*), REGEXP_MATCHES(key, '([a-z_+]+)|retort') emoji
FROM post_details
WHERE extra = 'retort'
GROUP BY key
ORDER BY 1 DESC
Contar emojis em posts (sem o usuário do sistema)
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji
FROM posts
WHERE user_id > 0
GROUP BY emoji
ORDER BY 1 DESC
4 curtidas
Legal.
Eu nunca usei REGEXP_MATCHES antes, mas acabei de testá-los (bem, o segundo. Não tenho o Retort instalado
).
Acho que você quer GROUP BY emoji em vez de smiley. Além disso, user_id > 1 excluiria o administrador original. Isso pode ser intencional, mas pensei em mencionar. 
Também pedi ao Bert
uma explicação, caso mais alguém ache útil:
O que Bert disse:
Esta consulta é usada para contar o número de vezes que cada emoji é usado na tabela posts.
Aqui está um detalhamento da consulta:
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: Esta é a parte principal da consulta. Ela está contando o número de linhas (count(*)) e usando uma expressão regular (REGEXP_MATCHES) para encontrar e extrair o emoji da coluna raw. A expressão regular ' :([a-z_]+): ' procura por padrões que começam e terminam com dois pontos (:) e têm uma ou mais letras minúsculas ou sublinhados entre eles. O sinalizador ‘g’ significa que ele corresponderá globalmente, ou seja, encontrará todas as correspondências em vez de parar após a primeira correspondência. O emoji correspondente é então apelidado de emoji.
FROM posts: Isso especifica a tabela da qual os dados estão sendo recuperados, neste caso, a tabela posts.
WHERE user_id > 0: Esta é uma condição que filtra as linhas que estão sendo consideradas. Apenas linhas onde o user_id é maior que 0 são incluídas.
GROUP BY emoji: Isso agrupa os resultados pelo alias emoji. Isso significa que para cada emoji único, ele contará o número de linhas.
ORDER BY 1 DESC: Isso ordena os resultados pela primeira coluna no conjunto de resultados (que é a contagem) em ordem decrescente. Isso significa que os emojis usados com mais frequência aparecerão primeiro.
Portanto, em resumo, esta consulta está contando o número de vezes que cada emoji é usado na tabela posts, para posts onde o user_id é maior que 0, e ordenando os resultados para que os emojis mais usados apareçam primeiro.
2 curtidas
Ah, você tem razão. Eu mudei isso no meu site, mas esqueci aqui. 
De fato, eu deveria ter mencionado isso na minha postagem. user_id 1 é um usuário legado (quando a postagem anônima ainda era permitida no meu site) que eu não queria incluir na contagem.
1 curtida