Verwendung von Emojis

Ich plane, retort durch discourse reactions zu ersetzen. Um herauszufinden, welche Emojis verwendet werden, wollte ich wissen, wie sie in meinem Forum genutzt werden. Da ich keine Abfrage dafür finden konnte, teile ich meine:

Anzahl der mit dem Retort-Plugin hinzugefügten Emojis

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

Anzahl der Emojis in Beiträgen (ohne den Systembenutzer)

SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji
    FROM posts
    WHERE user_id > 0
    GROUP BY emoji
    ORDER BY 1 DESC
4 „Gefällt mir“

Schön. :slight_smile: Ich habe REGEXP_MATCHES noch nie zuvor verwendet, aber ich habe gerade die beiden getestet (naja, die zweite. Ich habe Retort nicht installiert :slight_smile:).

Ich denke, Sie möchten nach emoji gruppieren und nicht nach smiley. Außerdem würde user_id > 1 den ursprünglichen Administrator ausschließen. Das ist vielleicht beabsichtigt, aber ich wollte es nur erwähnen. :+1:

Ich habe auch Bert :robot: um eine Erklärung gebeten, falls es für andere nützlich ist:

Was Bert gesagt hat:

Diese Abfrage wird verwendet, um zu zählen, wie oft jedes Emoji in der Tabelle posts verwendet wird.

Hier ist eine Aufschlüsselung der Abfrage:

  • SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: Dies ist der Hauptteil der Abfrage. Sie zählt die Anzahl der Zeilen (count(*)) und verwendet einen regulären Ausdruck (REGEXP_MATCHES), um das Emoji aus der Spalte raw abzugleichen und zu extrahieren. Der reguläre Ausdruck ' :([a-z_]+): ' sucht nach Mustern, die mit einem Doppelpunkt (:) beginnen und enden und dazwischen ein oder mehrere Kleinbuchstaben oder Unterstriche haben. Das Flag ‘g’ bedeutet, dass es global abgeglichen wird, d. h. alle Übereinstimmungen gefunden werden, anstatt nach der ersten Übereinstimmung aufzuhören. Das abgeglichene Emoji wird dann als emoji bezeichnet.
  • FROM posts: Dies gibt die Tabelle an, aus der die Daten abgerufen werden, in diesem Fall die Tabelle posts.
  • WHERE user_id > 0: Dies ist eine Bedingung, die die berücksichtigten Zeilen filtert. Nur Zeilen, bei denen die user_id größer als 0 ist, werden einbezogen.
  • GROUP BY emoji: Dies gruppiert die Ergebnisse nach dem Alias emoji. Das bedeutet, dass für jedes eindeutige Emoji die Anzahl der Zeilen gezählt wird.
  • ORDER BY 1 DESC: Dies sortiert die Ergebnisse nach der ersten Spalte im Ergebnissatz (der Anzahl) in absteigender Reihenfolge. Das bedeutet, dass die am häufigsten verwendeten Emojis zuerst erscheinen.

Zusammenfassend lässt sich sagen, dass diese Abfrage zählt, wie oft jedes Emoji in der Tabelle posts für Beiträge verwendet wird, bei denen die user_id größer als 0 ist, und die Ergebnisse so sortiert, dass die am häufigsten verwendeten Emojis zuerst erscheinen.

2 „Gefällt mir“

Oh, Sie haben Recht. Ich habe es auf meiner Seite geändert, aber hier vergessen. :blush:

In der Tat, das hätte ich in meinem Beitrag erwähnen sollen. user_id 1 ist ein Legacy-Benutzer (als anonymes Posten auf meiner Seite noch erlaubt war), den ich nicht in die Zählung aufnehmen wollte.

1 „Gefällt mir“