استعلام Data Explorer - تغطية الموظفين

\u200bمرحباً بالجميع،

هل تعرفون استعلام مستكشف البيانات الذي يساعد في رؤية عدد ونسبة المشاركات/المواضيع للموظفين خلال فترة زمنية معينة؟

شكراً لكل المساعدة.

آمل أن يساعدك الاستعلام التالي في ذلك.

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

WITH posts_data AS (
    SELECT
        COUNT(*) AS total_posts,
        SUM(CASE
            WHEN u.admin = 't' OR u.moderator = 't' THEN 1
            ELSE 0
        END) AS staff_posts
    FROM posts p
    INNER JOIN users u ON u.id = p.user_id
    WHERE p. post_type = 1
        AND p.deleted_at ISNULL
        AND p.created_at BETWEEN :start_date AND :end_date
        AND p.user_id > 0
)

SELECT
    total_posts,
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data
total_posts staff_posts staff_posts %
7400 3108 42.0
4 إعجابات

مرحباً @michebs،

شكراً لمشاركتك هذا. هل يمكنني أن أسأل عما إذا كان يمكننا تطبيق هذا على مجموعة محددة تم إنشاؤها بواسطة؟

لنفترض أن لدينا مجموعة من الموظفين ولكن ليس كلهم مشرفين أو مسؤولين، لذا نحتاج إلى إنشاء مجموعة جديدة تسمى “Katalon_team”، هل يمكننا الحصول على بيانات جميع الأشخاص في فريق Katalon هذا؟

شكراً لك.

إعجابَين (2)

لقد قمت بتعديل الاستعلام وأضفت اسم المجموعة كمعامل إدخال، بهذه الطريقة ستعمل مع أي مجموعة. آمل أن يساعد هذا.

--[params]
--date      :start_date = 2022-01-01
--date      :end_date = 2023-01-01
--string    :group_name = staff

WITH group_filter AS (
    SELECT user_id FROM group_users gu
    JOIN groups g ON g.id = gu.group_id
    WHERE LOWER(g.name) LIKE '%'||:group_name||'%'
),

posts_data AS (
    SELECT 
        COUNT(*) AS total_posts,
        SUM(CASE
            WHEN gf.user_id ISNULL THEN 0
            ELSE 1
        END) AS staff_posts
    FROM posts p
    LEFT JOIN group_filter gf ON gf.user_id = p.user_id
    WHERE p. post_type = 1
        AND p.deleted_at ISNULL
        AND p.created_at BETWEEN :start_date AND :end_date
        AND p.user_id > 0
)
       
SELECT 
    total_posts, 
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data
6 إعجابات

مرحباً ميشيل،

شكراً لك على تحديث SQL. واجهت مشكلة في تشغيله كما هو موضح في الصورة المرفقة.

يرجى تقديم المشورة حول كيفية حل هذه المشكلة. شكراً لك.

إعجاب واحد (1)

يبدو أن هذا الخطأ مرتبط بغياب جملة SELECT الأخيرة، السطر 27.

SELECT 
    total_posts, 
    staff_posts,
    ROUND((staff_posts/total_posts::decimal)*100,2) "staff_posts %"
FROM posts_data

هل هذا منطقي؟

إعجابَين (2)

نعم، آسف على خطئي، شكراً جزيلاً على مساعدتك.

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.