لقد لاحظت أن هذه الشارة موجودة للمستخدمين الذين يزورون المنتدى بشكل متتالي لمدة 10 أو 365 يومًا، لكنني أرغب في إنشاء شارة تلقائية في منتداي تُمنح للشخص الذي يزور المنتدى لمدة 30 يومًا متتالية.
أهم ما يثير اهتمامي هو الحصول على استعلام SQL.
لقد لاحظت أن هذه الشارة موجودة للمستخدمين الذين يزورون المنتدى بشكل متتالي لمدة 10 أو 365 يومًا، لكنني أرغب في إنشاء شارة تلقائية في منتداي تُمنح للشخص الذي يزور المنتدى لمدة 30 يومًا متتالية.
أهم ما يثير اهتمامي هو الحصول على استعلام SQL.
معلومة إضافية، يمكنك العثور على الاستعلامات الحالية باستخدام مستكشف البيانات.
مثال: SELECT * from badges WHERE query LIKE '%10 days%'
وهذا الاستعلام المخصص لـ 365 يومًا:
WITH consecutive_visits AS ( SELECT user_id , visited_at , visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s FROM user_visits ), visits AS ( SELECT user_id , MIN(visited_at) "start" , DENSE_RANK() OVER (PARTITION BY user_id ORDER BY s) "rank" FROM consecutive_visits GROUP BY user_id, s HAVING COUNT(*) >= 365 ) SELECT user_id , "start" + interval '365 days' "granted_at" FROM visits WHERE "rank" = 1
ولـ 10 أيام:
WITH consecutive_visits AS ( SELECT user_id , visited_at , visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s FROM user_visits ), visits AS ( SELECT user_id , MIN(visited_at) "start" , DENSE_RANK() OVER (PARTITION BY user_id ORDER BY s) "rank" FROM consecutive_visits GROUP BY user_id, s HAVING COUNT(*) >= 10 ) SELECT user_id , "start" + interval '10 days' "granted_at" FROM visits WHERE "rank" = 1
لذا، أعتقد أن هذا قد ينجح لـ 30 يومًا:
WITH consecutive_visits AS ( SELECT user_id , visited_at , visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s FROM user_visits ), visits AS ( SELECT user_id , MIN(visited_at) "start" , DENSE_RANK() OVER (PARTITION BY user_id ORDER BY s) "rank" FROM consecutive_visits GROUP BY user_id, s HAVING COUNT(*) >= 30 ) SELECT user_id , "start" + interval '30 days' "granted_at" FROM visits WHERE "rank" = 1
… وقد تحققت من أن هذا الاستعلام يعمل ويعطي نتائج تبدو معقولة، لكنني لم أتحقق من النتائج بدقة ![]()
شكرًا جزيلاً لك، أقدر ذلك.
عالقت؟ ماذا تقصد؟ (من فضلك سامحني على رديء لغتي الإسبانية) لقد قمت بالتحقق للتو وهو يعمل بشكل جيد. تأكد من إدخال جميع الحقول المطلوبة وأنه لا توجد أخطاء تحقق من الصحة في الأعلى. إذا تم الحفظ، يجب أن ترى الشارة الجديدة في أسفل القائمة على اليسار. يمكنك أيضًا معاينة النتائج باستخدام الرابط الموجود أسفل SQL.
كنت أحاول في منتداي نسخ استعلام SQL من الشارة التي تشير إلى 10 أيام ثم تغييرها إلى 30، لكنه لم يسمح لي بنسخه. لكن بفضل مساعدتك، تمكنت من إنشاء الشارة التي أردتها.