إحصائيات المستخدم مع طابع زمني صحيح

مرحبًا،

لدي قاعدة بيانات discourse sql. أحتاج إلى إحصائيات المستخدمين لطابع زمني محدد.
على سبيل المثال - أريد معرفة عدد المنشورات التي نشرها المستخدم.
إذا استخرجت هذه البيانات من user_stats، فستعطيني رقمًا منذ انضمامه إلى المنتدى حتى الآن، لكنني أحتاج إلى معرفة ذلك لفترة زمنية محددة.
هل لديك أي فكرة؟

ستحتاج إلى إنشاء الإحصائيات بنفسك باستخدام استعلام قاعدة بيانات جديد. على سبيل المثال، للحصول على عدد المنشورات خلال آخر 30 يومًا

SELECT count(*) from posts 
WHERE user_id=1
AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

يحتوي هذا الموضوع على العديد من استعلامات الأمثلة التي يمكنك استخدامها كنقطة انطلاق

شكرًا لك @david :slight_smile:

لكن ماذا لو أردت تحديد وقت محدد بدلاً من الأيام، مثل البحث بين 2020-2-2 00:00:00 و 2020-3-1 00:00:00؟

إذا قمت بتشغيل الاستعلام SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

فأحصل على رقم، لكن عند مراجعة إحصائياتي يكون الرقم أقل من ذلك.
إذا لاحظت هذا، فقد حصلت على 430 من قاعدة البيانات بينما العدد الفعلي هو 308؟
OnPaste.20200302-164643

العدد المعروض في واجهة المستخدم خاص فقط بالمنشورات العامة غير المحذوفة. أما العدد في قاعدة البيانات فيشمل كل المنشورات، بما في ذلك المنشورات المحذوفة والرسائل الخاصة والفئات الخاصة.

لكن ماذا لو أردت الحصول على حالة واجهة المستخدم تلك خلال فترة زمنية معينة؟

ستحتاج إلى تطبيق فلاتر مماثلة. شيء مثل هذا:

SELECT count(*) FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.user_id=23968
AND p.deleted_at IS NULL
AND NOT COALESCE(p.hidden, 't')
AND p.post_type = 1
AND t.deleted_at IS NULL
AND COALESCE(t.visible, 't')
AND t.archetype <> 'private_message'
AND p.user_id > 0
AND p.post_number > 1