استعلام مستكشف البيانات عن جميع المستخدمين النشطين (المتسللين + المساهمين)

أبحث عن تقديم إحصائيات لفريقنا حول عدد المستخدمين النشطين الحاليين، مع التعريف التالي لـ ‘المستخدم النشط’:

المستخدمون الذين قرأوا أثناء تسجيل الدخول أو نشروا في منتدانا خلال العام الماضي

لدينا عدد كبير من المستخدمين في وضع القائمة البريدية الذين يردون عبر البريد الإلكتروني، لذا سنفتقد الكثير منهم إذا جمعنا ببساطة عدد القراء وفقًا لهذا الاستعلام:

يمكنني أيضًا الحصول على عدد من نشروا هنا:

أنا فقط غير قادر على دمجهما باستخدام OR لالتقاط المجموعتين معًا. هل يمكنك المساعدة؟

يجب أن يعطيك هذا كل مستخدم قام بالقراءة أثناء تسجيل الدخول أو النشر خلال العام الماضي. سيطبع مستكشف البيانات أيضًا عدد هؤلاء المستخدمين.

SELECT p.user_id
FROM posts p
LEFT JOIN topics t ON t.id = p.topic_id
WHERE p.created_at::date > CURRENT_TIMESTAMP - INTERVAL '365 days'
 AND t.deleted_at IS NULL
 AND t.visible = TRUE
 AND t.closed = FALSE
 AND t.archived = FALSE
 AND t.archetype = 'regular'
 AND p.deleted_at IS NULL
UNION
SELECT u.user_id
FROM user_visits u
WHERE u.posts_read > 0
 AND u.visited_at > CURRENT_TIMESTAMP - INTERVAL '365 days'
ORDER BY user_id

من المرجح وجود طريقة أكثر فعالية للقيام بذلك، لكنها تعمل :slight_smile:. إذا كنت تريد فترة محددة، فيمكنك تغيير > CURRENT_TIMESTAMP - INTERVAL '365 days' (كلاهما) إلى شيء مثل هذا: BETWEEN '20200101'::date AND '20210101'::date.

لقد زودت بمعلومات ممتازة ومرجعيات في سؤالك! لم أحتاج سوى اختيار العناصر المناسبة ودمجها.

شكرًا لك! أنا أؤمن حقًا بتسهيل الأمر على الآخرين للمساعدة حيثما أمكن.

UNION - كان هذا هو الثغرة في معرفتي بـ SQL. تم حل كل شيء الآن، شكرًا لك! سأشارك استعلامي النهائي هنا بعد تحسينه أكثر.

في الواقع، انتهيتُ إلى القيام بشيء مختلف قليلاً لأنني أردتُ المزيد من المعلومات، وقد أثبتت جملة UNION أنها مقيدة بعض الشيء. كما أردتُ تقسيم النتائج حسب المجموعات. وقد حققتُ النجاح (أعتقد) عن طريق تعديل استعلام

شكراً لمشاركتك هذا. لقد حاولت استخدامه وأيضاً رمزاً مشابهاً جداً في استعلامات الشارات ولكنني أحصل على هذا الخطأ:

مخالفة العقد:
الاستعلام لا يُرجع عمود 'granted_at'

هل ينقصني شيء في الرمز لاستخدامه في نظام الشارات؟ حالة الاستخدام الخاصة بي هي أتمتة مجموعة ‘المتطفلين’ :slight_smile:

مكر!

استعلامات الشارات معقدة للغاية - وتتطلب ببساطة ‘user_id’ و ‘granted_at’ ليتم إرجاعها. لذا ستحتاج إلى اختراق هذا قليلاً.

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

أخبرنا كيف سارت الأمور!