تسجيلات أسبوعية/شهرية/سنوية

:memo: توفر هذه الاستعلامات تفصيلاً لعدد حسابات المستخدمين الجديدة التي تم إنشاؤها خلال الإطار الزمني، باستثناء الحسابات المرحلية وغير المفعلة. يتم تقسيم الإجماليات حسب عدد عمليات التسجيل كل أسبوع/شهر/سنة، وإجمالي تشغيلي للفترة الزمنية المحددة، وإجمالي عدد حتى الآن والذي يشمل جميع عمليات التسجيل السابقة.

ملاحظة: إذا تم حذف مستخدم، فلن تظهر سجلاته في قاعدة البيانات وبالتالي لن يتم تضمينها في نتائج الاستعلام. يمكن أن يؤدي هذا إلى اختلافات عند مقارنة التشغيلات الأخيرة بالسابقة.

عمليات التسجيل الأسبوعية

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

WITH weekly_signups AS (

SELECT
    to_char(date_trunc('week', created_at)::date,'YYYY-MM-DD') AS week,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY week
),

all_to_date AS (

SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true

)

SELECT
    week AS "بداية الأسبوع",
    signups AS "عمليات التسجيل الأسبوعية",
    SUM(signups::int) OVER (ORDER BY week) AS "الإجمالي التشغيلي",
    (SUM(signups::int) OVER (ORDER BY week) + previous::int) AS "إجمالي المجموع"
FROM weekly_signups, all_to_date
ORDER BY week ASC
بداية الأسبوع عمليات التسجيل الأسبوعية الإجمالي التشغيلي إجمالي المجموع
2023-07-31 98 98 45418
2023-08-07 141 239 45559
2023-08-14 129 368 45688
2023-08-21 126 494 45814
2023-08-28 138 632 45952
2023-09-04 53 685 46005

عمليات التسجيل الشهرية

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

WITH monthly_signups AS (
SELECT
    date_trunc('month', created_at)::date AS month,
    to_char(date_trunc('month', created_at)::date,'Month YYYY') AS month_display,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY month, month_display
),

all_to_date AS (
SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true
)

SELECT
    month_display AS "الشهر",
    signups AS "عمليات التسجيل الشهرية",
    SUM(signups::int) OVER (ORDER BY month) AS "الإجمالي التشغيلي",
    (SUM(signups::int) OVER (ORDER BY month) + previous::int) AS "إجمالي المجموع"
FROM monthly_signups, all_to_date
ORDER BY month
الشهر عمليات التسجيل الشهرية الإجمالي التشغيلي إجمالي المجموع
June 2023 596 596 44790
July 2023 517 1113 45307
August 2023 583 1696 45890
September 2023 102 1798 46005

عمليات التسجيل السنوية

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

WITH yearly_signups AS (

SELECT
    to_char(date_trunc('year', created_at)::date,'YYYY') AS year,
    COUNT(*) AS signups
FROM users
WHERE created_at::date BETWEEN :start_date::date AND :end_date::date
  AND staged = false
  AND active = true
GROUP BY year
),

all_to_date AS (

SELECT COUNT(*) AS previous
FROM users
WHERE created_at::date < :start_date
  AND staged = false
  AND active = true

)

SELECT
    year AS "السنة",
    signups AS "عمليات التسجيل السنوية",
    SUM(signups::int) OVER (ORDER BY year) AS "الإجمالي التشغيلي",
    (SUM(signups::int) OVER (ORDER BY year) + previous::int) AS "إجمالي المجموع"
FROM yearly_signups, all_to_date
ORDER BY year ASC
السنة عمليات التسجيل السنوية الإجمالي التشغيلي إجمالي المجموع
2019 3590 3590 23135
2020 4258 7848 27393
2021 5908 13756 33301
2022 7889 21645 41190
2023 4815 26460 46005
10 إعجابات

مرحباً، أعتذر عن كوني غامضاً جداً بشأن كيفية عمل هذا، ولكن كيف يبدو أحد هذه الأمثلة عند ملء التواريخ؟

لست متأكدًا مما تقصده؟ يوجد مثال للنتائج تحت كل منها، إذا كان هذا ما تبحث عنه؟

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

مفهوم.

هذا ما أحاول أن أسأله: أين في الكود نفسه أضع تاريخ البدء والانتهاء، وبأي تنسيق أكتبه؟

لا تفعل ذلك، حيث يجب أن يضيف مربعات إدخال فوق الزر لتشغيل الاستعلام (إذا لم يكن الأمر كذلك، قم بالتحديث بعد الحفظ وستظهر)، ثم

أعتقد أنه سيمنحك منتقي تاريخ.

إعجابَين (2)

نعم، هناك مشكلة معروفة حيث لا تظهر مربعات إدخال المعلمات في المرة الأولى إلا بعد تحديث الصفحة.

لا يزال الأمر ليس أنيقًا بما يكفي لوجود أداة اختيار التاريخ (على الرغم من أننا نأمل ذلك :slight_smile: :crossed_fingers:)، ولكني أعتقد أنه متسامح جدًا مع التنسيق. أستخدم تنسيق التاريخ في المملكة المتحدة (مثل 21/01/2024) عندما أستخدمه بنفسي، ولكن عندما أشارك أمثلة لقطات الشاشة أحاول الالتزام بتنسيق مثل 2024-01-21 لأنه أكثر عالمية.

3 إعجابات

فهمت الآن. شكرًا. كنت بحاجة إلى تحديث الصفحة.

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