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
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.
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.