غالبًا ما ترغب في استخراج البيانات لفترة زمنية محددة. يمكنك القيام بذلك عن طريق ترميز الفترة الزمنية الخاصة بك في الاستعلام نفسه، ولكن لجعل تقريرك أكثر مقاومة للتغييرات المستقبلية، يمكنك إضافة معلمة تاريخ:
تم تصميم هذا الاستعلام لحساب العدد الإجمالي للمشاركات في كل فئة (باستثناء المشاركات والمواضيع المحذوفة، والرسائل الخاصة، والمواضيع التي لا تحتوي على فئة) التي تم إنشاؤها ضمن نطاق تاريخ محدد، ثم ترتيب الفئات حسب العدد الإجمالي للمشاركات بترتيب تنازلي.
-- [params]
-- date :start_date -- This is a parameter for the start date of the range
-- date :end_date -- This is a parameter for the end date of the range
SELECT
t.category_id,
COUNT(p.id) AS "Total Posts" -- Count the number of posts in each category
FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.created_at::date BETWEEN :start_date AND :end_date -- Filter posts that were created between the start date and the end date (::date casts the created_at timestamp as a date)
AND t.deleted_at IS NULL
AND p.deleted_at IS NULL
AND t.archetype <> 'private message'
AND p.user_id > 0
AND t.category_id IS NOT NULL
GROUP BY 1
ORDER BY 2 DESC
يجعل استخدام نمط المعلمة date بدلاً من string إدخال قيمة المعلمة أكثر سهولة، خاصة عند مشاركتها مع الآخرين.
نصيحة أخرى جديرة بالملاحظة لهذا النوع من الاستعلامات هي تحويل created_at إلى تاريخ. نظرًا لأن القيمة مخزنة في قاعدة البيانات كطابع زمني، إذا لم تقم بتحويلها إلى تاريخ، فلن يلتقط الاستعلام النتائج من تاريخ :end_date نفسه.
يمكنك التحقق من القيم المخزنة كطوابع زمنية باستخدام شجرة المستكشف:
هذا الاستعلام هو في الغالب مثال لتوضيح المبادئ. نأمل أن تجده مفيدًا، ولكن إذا كانت لديك أي أسئلة، فيرجى طرحها أدناه. ![]()
