التلعيب والدعوات

هل سينجح شيء من هذا القبيل (تم تعديله ليناسب تنسيق الاستعلام القابل للتسجيل - هذا اختبار لمستكشف البيانات :slight_smile:):

-- [params]
-- date :start_date
-- date :end_date

SELECT 
    invited_by_id AS user_id,
    COUNT(*) AS user_invites,
    COUNT(*) * 10 AS invite_score
FROM invited_users iu
  JOIN invites i ON i.id = iu.invite_id
  JOIN users u ON u.id = iu.user_id
WHERE iu.redeemed_at::date BETWEEN :start_date AND :end_date
  AND iu.user_id <> i.invited_by_id 
  AND u.created_at > iu.redeemed_at
GROUP BY invited_by_id
ORDER BY user_invites DESC

عند حذف مستخدم، يتم مسحه من جدول invited_users، لذلك لن يكون ضمن العدد. إذا تم الحذف في غضون 10 أيام، فسيتم تصحيحه تلقائيًا، وإذا كان أطول من ذلك، فستحتاج إلى تحديث يدوي للدرجة.

سيأخذ استخدام تاريخ redeemed_at في الاعتبار تلك الدعوات التي تم إنشاؤها منذ أكثر من 10 أيام.

AND iu.user_id <> i.invited_by_id سيستبعد أيضًا الدعوات الذاتية.

الانضمام إلى جدول users وإضافة AND u.created_at > iu.redeemed_at سيستبعد أيضًا دعوة المستخدمين الحاليين.

3 إعجابات