هذا هو إصدار SQL لتقرير لوحة المعلومات لعدد مرات مشاهدة الصفحة المجمعة.
يوفر تقرير SQL هذا عددًا يوميًا لمرات مشاهدة الصفحة من المستخدمين المسجلين، والمستخدمين المجهولين، والزواحف على موقع Discourse.
-- [params]
-- date :start_date
-- date :end_date
SELECT
ar.date::date AS "date",
SUM(ar.count) AS "Total Views",
SUM(CASE WHEN ar.req_type=6 THEN ar.count ELSE 0 END) AS "Crawler Views",
SUM(CASE WHEN ar.req_type=7 THEN ar.count ELSE 0 END) AS "Logged in User Views",
SUM(CASE WHEN ar.req_type=8 THEN ar.count ELSE 0 END) AS "Anonymous User Views"
FROM application_requests ar
WHERE req_type IN (6,7,8)
AND ar.date::date BETWEEN :start_date AND :end_date
GROUP BY date
ORDER BY date
شرح استعلام SQL
يعمل الاستعلام على جدول application_requests الذي يسجل أنواعًا مختلفة من الطلبات المقدمة إلى المنتدى. يركز على ثلاثة أنواع محددة من الطلبات التي تم تحديدها بواسطة قيم req_type:
6: مشاهدات الزواحف7: مشاهدات المستخدمين المسجلين8: مشاهدات المستخدمين المجهولين
إليك شرح خطوة بخطوة لما يفعله الاستعلام:
- المعلمات: يقبل الاستعلام معلمتين،
:start_dateو:end_date، مما يسمح للمستخدم بتحديد النطاق الزمني للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخYYYY-MM-DD. - الاختيار: يختار الاستعلام تاريخ الطلب (
ar.date) ويحوله إلى نوعdate. كما أنه يحسب إجمالي المشاهدات وتفصيلاً للمشاهدات حسب النوع (الزاحف، المستخدم المسجل، والمستخدم المجهول) لكل تاريخ ضمن النطاق المحدد. - الجمع: يجمع عمود
countلكل نوع من أنواع المشاهدات. تُستخدم عباراتCASEلتضمين المجموع بشكل شرطي بناءً علىreq_type. - التصفية: تقوم عبارة
WHEREبتصفية السجلات لتشمل فقط تلك التي تحتوي على قيمreq_type6 أو 7 أو 8 وتواريخ تقع بين:start_dateو:end_dateالمحددين. - التجميع: يجمع الاستعلام النتائج حسب التاريخ، مما يضمن تجميع عدد كل نوع من المشاهدات لكل يوم.
- الترتيب: يتم ترتيب النتائج حسب التاريخ لتوفير عرض زمني لحركة المرور.
نتائج مثال
| date | Total Views | Crawler Views | Logged in User Views | Anonymous User Views |
|---|---|---|---|---|
| 2023-11-18 | 5608 | 3052 | 565 | 1928 |
| 2023-11-19 | 9207 | 6564 | 470 | 2273 |
| 2023-11-20 | 6271 | 2631 | 1016 | 2924 |

