المستخدمون الذين لديهم أول منشور خلال الفترة المحددة

مرحبًا. أنا جديد في SQL. أود الحصول على قائمة بالمستخدمين الذين ينشرون لأول مرة خلال فترة زمنية محددة.

ملاحظة: المقصود هو أول منشور لهم، وليس أول تسجيل دخول. حالة الاستخدام لدينا تختلف عن معظم الحالات، لذا فإن المنشور هو الأهم.

هل لدى أحدكم حل مشابه؟ أقدر أي مساعدة!

شكرًا جزيلاً!

هذا يجب أن يفعل الحيلة @ThunderThighs. أضفه إلى مستكشف البيانات الخاص بك، املأ تاريخ البداية وتاريخ النهاية، وستكون جاهزًا للانطلاق. يجب أن تتطابق التواريخ مع تنسيق مدعوم، ومن بينها YYYY-MM-DD.

المستخدمون الذين لديهم أول منشور خلال الفترة

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

SELECT username
FROM users u
JOIN user_stats us
ON u.id = us.user_id
WHERE us.first_post_created_at BETWEEN :start_date::date AND :end_date::date

هذا مفيد للغاية.

كيف يمكنك التوسع في ذلك لاسترجاع هذه المنشورات فعليًا؟

هل شيء مثل هذا يلبي احتياجاتك؟

-- [المعاملات]
-- date :start_date
-- date :end_date

SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND :end_date::date

هذا مثالي. شكرًا جزيلاً.

هل يمكنني طرح سؤال بسيط لمبتدئ في SQL؟ ما وظيفة u و us في السطرين الثاني والثالث؟ هل تعملان بشكل مشابه لـ AS بحيث يمكن الإشارة إلى users الآن باستخدام البادئة u، وuser_stats باستخدام البادئة us؟

لا مشكلة!

هذا صحيح. u و us هما أسماء مستعارة للجداول. يمكنك قراءة المزيد عنها هنا: http://www.postgresqltutorial.com/postgresql-alias/

هي في جوهرها اختصار. تسمح لك باستخدام us.user_id بدلاً من user_stats.user_id للإشارة إلى عمود user_id في جدول user_stats. تكون مفيدة بشكل خاص مع أسماء الجداول الطويلة والاستعلامات الكبيرة.