استخدام FILTER لتلخيص البيانات

نظرة عامة

في هذا التقرير، سنستكشف استعلام SQL يستخدم الدالة FILTER لتقسيم بيانات المستخدم بناءً على تفضيلات ملخص نشاطهم. الدالة FILTER هي أداة قوية في SQL تسمح بالتجميع الشرطي داخل استعلام واحد، مما يوفر طريقة لتطبيق دوال التجميع مثل COUNT() و SUM() و AVG() وما إلى ذلك، على مجموعة فرعية من البيانات.

شرح استعلام SQL

يقوم استعلام SQL المقدم بحساب عدد المستخدمين الذين لديهم إعدادات ملخص نشاط مختلفة. إليك تفصيل لكل جزء من الاستعلام:

SELECT 
    COUNT(*) FILTER (WHERE uo.email_digests = false) AS "Disabled",
    COUNT(*) FILTER (WHERE uo.email_digests = true) AS "Total Enabled",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND u.last_seen_at > CURRENT_DATE - INTERVAL '180 DAYS') AS "Skipped",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 30) AS "Half Hourly",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 60 ) AS "Hourly",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 1440) AS "Daily",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 10080) AS "Weekly",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 43200) AS "Monthly",
    COUNT(*) FILTER (WHERE uo.email_digests = true AND uo.digest_after_minutes = 259200) AS "6 Monthly"
FROM user_options uo
  JOIN users u ON u.id = uo.user_id
WHERE uo.user_id > 0
  • COUNT(*) FILTER (WHERE condition) يحسب عدد الصفوف التي تطابق الشرط المحدد.
  • يستخدم العبارة AS لإعادة تسمية أعمدة الإخراج لتحسين القراءة.
  • يقوم الاستعلام بربط جدول user_options بجدول users للوصول إلى إعدادات المستخدم وبيانات النشاط.
  • يقوم الشرط WHERE uo.user_id > 0 بتصفية أي مستخدمين نظام أو إدخالات غير قياسية.

كيفية عمل الدالة FILTER

تُستخدم الدالة FILTER بالاقتران مع دالة تجميع لحساب الصفوف التي تلبي معايير محددة فقط. إنها بديل أكثر قابلية للقراءة وغالبًا ما يكون أكثر كفاءة لاستخدام الاستعلامات الفرعية أو عبارات CASE للتجميع الشرطي.

إليك الصيغة العامة لاستخدام FILTER:

AGGREGATE_FUNCTION(column_name) FILTER (WHERE condition) AS alias_name

متى تستخدم الدالة FILTER

تكون الدالة FILTER مفيدة بشكل خاص عندما تحتاج إلى إجراء عمليات عد (أو تجميعات أخرى) متعددة بشروط مختلفة في استعلام واحد. إنها تبسط الاستعلام وتتجنب الحاجة إلى استعلامات فرعية متعددة أو عبارات CASE معقدة.

قد تستخدم الدالة FILTER لتقسيم المستخدمين حسب تفضيلاتهم، أو المنشورات حسب ردود أفعالهم، أو المواضيع حسب فئاتها، من بين حالات استخدام أخرى. إنها أداة متعددة الاستخدامات يمكنها تحسين إعداد التقارير وتحليل البيانات.

الخلاصة

تعد الدالة FILTER إضافة قيمة لأي مجموعة أدوات SQL. إنها تسمح بالتجميع الشرطي الواضح والموجز، مما يجعل استعلامات البيانات المعقدة أكثر قابلية للإدارة والفهم.

4 إعجابات