Utilisation des emojis

Je prévois de remplacer retort par discourse reactions. Pour savoir quels emojis utiliser, je voulais connaître leur utilisation sur mon forum. Comme je n’ai pas trouvé de requête pour cela, je partage la mienne :

Compter les emojis ajoutés avec le plugin retort

SELECT count(*), REGEXP_MATCHES(key, '([a-z_+]+)|retort') emoji
    FROM post_details
    WHERE extra = 'retort'
    GROUP BY key
    ORDER BY 1 DESC

Compter les emojis dans les messages (sans l’utilisateur système)

SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji
    FROM posts
    WHERE user_id > 0
    GROUP BY emoji
    ORDER BY 1 DESC
4 « J'aime »

Bien. :slight_smile: Je n’avais jamais utilisé REGEXP_MATCHES auparavant, mais je viens de les tester (enfin, le second. Je n’ai pas Retort installé :slight_smile:).

Je pense que vous voulez faire un GROUP BY emoji plutôt que smiley. De plus, user_id > 1 exclurait l’administrateur d’origine. C’est peut-être intentionnel, mais je voulais juste le mentionner. :+1:

J’ai aussi demandé à Bert :robot: une explication au cas où cela serait utile à quelqu’un d’autre :

Ce que Bert a dit :

Cette requête est utilisée pour compter le nombre de fois où chaque emoji est utilisé dans la table posts.

Voici une explication de la requête :

  • SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: C’est la partie principale de la requête. Elle compte le nombre de lignes (count(*)) et utilise une expression régulière (REGEXP_MATCHES) pour trouver et extraire l’emoji de la colonne raw. L’expression régulière ' :([a-z_]+): ' recherche des motifs qui commencent et se terminent par deux points (:) et qui contiennent une ou plusieurs lettres minuscules ou un trait de soulignement entre les deux. Le drapeau ‘g’ signifie qu’il trouvera toutes les correspondances plutôt que de s’arrêter après la première. L’emoji trouvé est ensuite renommé emoji.
  • FROM posts: Ceci spécifie la table à partir de laquelle les données sont récupérées, dans ce cas, la table posts.
  • WHERE user_id > 0: C’est une condition qui filtre les lignes considérées. Seules les lignes où user_id est supérieur à 0 sont incluses.
  • GROUP BY emoji: Ceci regroupe les résultats par l’alias emoji. Cela signifie que pour chaque emoji unique, il comptera le nombre de lignes.
  • ORDER BY 1 DESC: Ceci trie les résultats par la première colonne de l’ensemble de résultats (qui est le compte) par ordre décroissant. Cela signifie que les emojis les plus fréquemment utilisés apparaîtront en premier.

Donc, en résumé, cette requête compte le nombre de fois où chaque emoji est utilisé dans la table posts, pour les messages où user_id est supérieur à 0, et trie les résultats de manière à ce que les emojis les plus fréquemment utilisés apparaissent en premier.

2 « J'aime »

Oh, vous avez raison. Je l’ai changé sur mon site mais j’ai oublié ici. :blush:

En effet, j’aurais dû le mentionner dans mon message. user_id 1 est un utilisateur hérité (quand la publication anonyme était encore autorisée sur mon site) que je ne voulais pas inclure dans le décompte.

1 « J'aime »