هذا هو إصدار SQL لتقرير لوحة المعلومات لزيارات المستخدم وزيارات المستخدم (الجوال).
يوفر تقرير لوحة المعلومات هذا رؤى حول تفاعل المستخدم من خلال تتبع زيارات المستخدم اليومية. يمكن للمسؤولين تصفية البيانات بناءً على النطاق الزمني، وعضوية المجموعة، ونوع الجهاز (جوال أو غير جوال).
يمكن أن يساعد فهم أنماط زيارات المستخدم المسؤولين على اتخاذ قرارات مستنيرة لتعزيز تفاعل المستخدم وصحة المجتمع.
-- [params]
-- date :start_date = 2024-01-06
-- date :end_date = 2024-02-07
-- null text :group_name
-- boolean :mobile_views = false
SELECT uv.visited_at AS date,
COUNT(DISTINCT uv.user_id) AS visits_count
FROM user_visits uv
LEFT JOIN group_users gu ON gu.user_id = uv.user_id
LEFT JOIN groups g ON g.id = gu.group_id AND (:group_name IS NULL OR g.name = :group_name)
WHERE uv.visited_at BETWEEN :start_date AND :end_date
AND (:group_name IS NULL OR g.name IS NOT NULL)
AND (:mobile_views = false OR uv.mobile = true)
GROUP BY uv.visited_at
ORDER BY uv.visited_at ASC
شرح استعلام SQL
يعمل استعلام SQL عن طريق تحديد البيانات من جدول user_visits، الذي يسجل زيارات كل مستخدم للمنصة. يتم شرح المكونات الرئيسية للاستعلام أدناه:
- المعلمات (Parameters)
- يحدد
:start_dateو:end_dateالنطاق الزمني للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخYYYY-MM-DD. - يسمح
:group_nameبالتصفية حسب اسم مجموعة مستخدم محددة. إذا لم يتم تحديده، يتم تضمين البيانات لجميع المجموعات. - يحدد
:mobile_viewsما إذا كان سيتم تضمين زيارات أجهزة الجوال فقط (true) أو جميع الزيارات (false).
- يحدد
- اختيار البيانات وعمليات الربط (Data Selection and Join Operations):
- يحدد الاستعلام تاريخ الزيارة (
visited_at) ويحسب معرفات المستخدمين المميزة (user_id) لحساب عدد الزيارات الفريدة لكل يوم. - يجري
LEFT JOINمع جدولgroup_usersلربط زيارات المستخدم بالمجموعات الخاصة بهم، يليهLEFT JOINآخر مع جدولgroupsللتصفية حسب اسم المجموعة المحدد، إن وجد.
- يحدد الاستعلام تاريخ الزيارة (
- التصفية (Filtering):
- يطبق شرط
WHEREعوامل التصفية بناءً على المعلمات المدخلة:- يضمن تضمين الزيارات ضمن النطاق الزمني المحدد فقط.
- يقوم بالتصفية حسب اسم المجموعة إذا تم تحديده، ويضمن حساب الزيارات للمستخدمين الذين ينتمون إلى تلك المجموعة.
- يتضمن زيارات الجوال فقط إذا تم تعيين المعلمة
:mobile_viewsإلىtrue.
- يطبق شرط
- التجميع والترتيب (Grouping and Ordering):
- يقوم الاستعلام بتجميع النتائج حسب تاريخ الزيارة (
visited_at) لتجميع عدد الزيارات لكل يوم. - يقوم بترتيب النتائج بترتيب تصاعدي حسب التاريخ، مما يوفر عرضًا زمنيًا لزيارات المستخدم.
- يقوم الاستعلام بتجميع النتائج حسب تاريخ الزيارة (
نتائج مثال
| date | visits_count |
|---|---|
| 2024-01-06 | 67 |
| 2024-01-07 | 71 |
| 2024-01-08 | 88 |
| 2024-01-09 | 79 |
| 2024-01-10 | 78 |
| … | … |