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
「いいね!」 4
結構です。
REGEXP_MATCHES は初めて使いますが、これらをテストしてみました(2番目のものだけです。Retort はインストールしていません
)。
smiley ではなく emoji で GROUP BY する必要があると思います。また、user_id > 1 は元の管理者を排除します。意図したことかもしれませんが、念のため言っておきます。
他の誰かの役に立つかもしれないので、Bert
にも説明を求めました。
Bert の発言:
このクエリは、posts テーブルで各絵文字が使用された回数をカウントするために使用されます。
クエリの内訳は次のとおりです。
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: これはクエリの主要部分です。行数 (count(*)) をカウントし、正規表現 (REGEXP_MATCHES) を使用して raw 列から絵文字を一致させ、抽出します。正規表現 ' :([a-z_]+): ' は、コロン (:) で始まり、コロンで終わるパターンを探し、その間に1つ以上の小文字またはアンダースコアがあるものを探します。「g」フラグは、グローバルに一致することを意味します。つまり、最初の一致で停止するのではなく、すべての一致を見つけます。一致した絵文字は emoji というエイリアスが付けられます。
FROM posts: これは、データが取得されるテーブルを指定します。この場合は posts テーブルです。
WHERE user_id > 0: これは、考慮される行をフィルタリングする条件です。user_id が 0 より大きい行のみが含まれます。
GROUP BY emoji: これは、結果を emoji エイリアスでグループ化します。これは、各ユニークな絵文字に対して、行数をカウントすることを意味します。
ORDER BY 1 DESC: これは、結果セットの最初の列(カウント)を降順で並べ替えます。これにより、最も頻繁に使用される絵文字が最初に表示されます。
したがって、要約すると、このクエリは、user_id が 0 より大きい投稿で、posts テーブルで使用された各絵文字の回数をカウントし、最も頻繁に使用される絵文字が最初に表示されるように結果を並べ替えます。
「いいね!」 2
おっしゃる通りです。サイトでは変更しましたが、こちらに反映するのを忘れていました。
はい、投稿で言及すべきでした。user_id 1はレガシーユーザー(サイトで匿名投稿が許可されていた頃)であり、カウントに含めたくありませんでした。
「いいね!」 1