لطيف.
لم أستخدم REGEXP_MATCHES من قبل، لكنني اختبرت هذه للتو (حسنًا، الثانية. ليس لدي Retort مثبتًا
).
أعتقد أنك تريد GROUP BY emoji بدلاً من smiley. أيضًا، user_id > 1 سيستبعد المسؤول الأصلي. قد يكون هذا مقصودًا، لكنني أردت فقط ذكره. ![]()
لقد سألت Bert
أيضًا عن شرح إذا وجد أي شخص آخر ذلك مفيدًا:
ما قاله Bert:
يُستخدم هذا الاستعلام لحساب عدد المرات التي يتم فيها استخدام كل رمز تعبيري في جدول 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، وترتيب النتائج بحيث تظهر الرموز التعبيرية الأكثر استخدامًا أولاً.