Я планирую заменить retort на discourse reactions. Чтобы понять, какие эмодзи использовать, я хотел узнать статистику их использования на моём форуме. Так как я не нашёл готового запроса, делюсь своим:
Подсчёт эмодзи, добавленных плагином retort
SELECT count(*), REGEXP_MATCHES(key, '([a-z_+]+)|retort') emoji
FROM post_details
WHERE extra = 'retort'
GROUP BY key
ORDER BY 1 DESC
Подсчёт эмодзи в постах (без учёта системного пользователя)
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji
FROM posts
WHERE user_id > 0
GROUP BY emoji
ORDER BY 1 DESC
Отлично.
Я раньше не использовал REGEXP_MATCHES, но только что протестировал эти запросы (вернее, второй. У меня не установлен Retort
).
Кажется, вам нужно использовать GROUP BY emoji, а не smiley. Также условие user_id > 1 исключит исходного администратора. Возможно, это намеренно, но я хотел упомянуть об этом. 
Я также попросил Берта
дать объяснение, если кому-то ещё это будет полезно:
Что сказал Берт:
Этот запрос используется для подсчёта количества использований каждого эмодзи в таблице posts.
Вот разбор запроса:
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: это основная часть запроса. Она подсчитывает количество строк (count(*)) и использует регулярное выражение (REGEXP_MATCHES) для поиска и извлечения эмодзи из колонки raw. Регулярное выражение ' :([a-z_]+): ' ищет паттерны, которые начинаются и заканчиваются двоеточием (:) и содержат одну или несколько строчных букв или подчёркиваний между ними. Флаг «g» означает глобальный поиск, то есть будут найдены все совпадения, а не только первое. Найденное эмодзи затем псевдонимизируется как emoji.
FROM posts: указывает таблицу, из которой извлекаются данные, в данном случае таблицу posts.
WHERE user_id > 0: это условие, которое фильтрует рассматриваемые строки. Включаются только строки, где user_id больше 0.
GROUP BY emoji: группирует результаты по псевдониму emoji. Это означает, что для каждого уникального эмодзи будет подсчитано количество строк.
ORDER BY 1 DESC: сортирует результаты по первой колонке в наборе результатов (то есть по счётчику) в порядке убывания. Это означает, что наиболее часто используемые эмодзи появятся первыми.
Итак, вкратце: этот запрос подсчитывает количество использований каждого эмодзи в таблице posts для записей, где user_id больше 0, и сортирует результаты так, чтобы наиболее часто используемые эмодзи отображались первыми.
О, вы правы. Я изменил это на своём сайте, но забыл здесь. 
Действительно, я должен был упомянуть об этом в своём посте. user_id 1 — это устаревший пользователь (когда на моём сайте ещё разрешались анонимные публикации), которого я не хотел включать в подсчёт.